AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 78714147
Accepted
Michi
Michi
Asked: 2024-07-06 15:06:30 +0800 CST2024-07-06 15:06:30 +0800 CST 2024-07-06 15:06:30 +0800 CST

Obtenha o primeiro e o último número que ocorre em uma string (de texto) em uma célula

  • 772
0 A B C
1 primeiro número último número
2 Principais 1-5 1 5
3 Principais 5-10 5 10
4 Principais 11-15 11 15

Quero Column Bextrair o primeiro número que ocorre nas strings em Column A.
Quero Column Cextrair o último número que ocorre nas strings em Column A.

Tentei aplicar soluções para esta questão , mas elas não funcionaram no meu caso.

Qual fórmula eu preciso para obter os resultados esperados Column Be Column C?

excel
  • 6 6 respostas
  • 96 Views

6 respostas

  • Voted
  1. Mayukh Bhattacharya
    2024-07-06T18:24:12+08:002024-07-06T18:24:12+08:00

    Apenas uma solução alternativa não é mais curta como a muito bem respondida por Pb Sir

    insira a descrição da imagem aqui


    =--TEXTSPLIT(A2,TEXTSPLIT(A2,SEQUENCE(10)-1,,1),,1)
    

    Além disso, não estou muito familiarizado com o assunto REGEX, mas seguindo as soluções do JvdV Sir sobre o mesmo tópico, acho que isso pode funcionar, e pode-se usar o seguinte, se durante a escrita o Office Insiders estiver habilitado:

    =--REGEXEXTRACT(A2,"\d+",1)
    

    Ou, se você quiser fazer isso de uma só vez para todo o intervalo:

    =--REGEXEXTRACT(A2:A4,"\d+"&{"","$"})
    

    Isso funciona porque forçamos o Excel a retornar duas colunas devido à adição de uma string vazia à primeira E uma âncora de linha final à segunda coluna. Dessa forma, retornamos a primeira ocorrência de 1+ dígitos na 1ª coluna e os 1+ dígitos que ficam no final de uma string na 2ª coluna.


    Sinta-se à vontade para fazer edições em minha resposta, REGEXse alguém achar que não está correta, eu fiz issoCommunity Wiki


    • 3
  2. P.b
    2024-07-06T17:14:46+08:002024-07-06T17:14:46+08:00
    =TEXTSPLIT(A2,VSTACK("-",CHAR(SEQUENCE(58,,65))),,1)
    

    Isso divide o texto em caracteres maiúsculos ou minúsculos e o sinal de menos (e alguns caracteres extras não utilizados entre a sequência de caracteres maiúsculos e minúsculos).

    Na verdade, isso é feito por texto ou sinal de menos:

    =TEXTSPLIT(UPPER(A2),CHAR(VSTACK(45,SEQUENCE(26,,65))),,1)
    

    Para Excel mais antigo, recomendo o uso de auxiliares ou intervalos nomeados: Helper1 em B2:=MAX(IFERROR(FIND(CHAR(ROW($65:$90)),UPPER(A2)),0))+1

    Ajudante2 em C2: =FIND("-",A2)

    Primeiro número: =--MID(A2,B2,C2-B2)

    Segundo número: =--RIGHT(A2,LEN(A2)-C2)

    • 2
  3. Ron Rosenfeld
    2024-07-06T20:10:20+08:002024-07-06T20:10:20+08:00

    Para versões anteriores do Excel:

    First: =MID(A2,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A2&"0123456789")),FIND("-",A2)-MIN(FIND({0;1;2;3;4;5;6;7;8;9},A2&"0123456789")))
    
    Last: =MID(A2,FIND("-",A2)+1,255)
    

    O exemplo acima retorna as sequências de dígitos como texto. Se você preferir que sejam números reais, prefixe cada fórmula com o unário duplo ( --) para converter.

    • 2
  4. Best Answer
    Black cat
    2024-07-06T15:45:08+08:002024-07-06T15:45:08+08:00

    Esta fórmula aceita qualquer comprimento de números.

    B20: =LET(perchar,MID(TEXTBEFORE(A20,"-"),SEQUENCE(1,LEN(TEXTBEFORE(A20,"-"))),1), TEXTJOIN("",TRUE,IF(ISNUMBER(--perchar),perchar,"")))

    C20:=TEXTAFTER(A20,"-")

    insira a descrição da imagem aqui

    • 0
  5. nkalvi
    2024-07-07T03:28:42+08:002024-07-07T03:28:42+08:00

    Obrigado por postar essas perguntas para praticar :)

    Tentando com este método (Microsoft 365): substitua todos os não dígitos por espaços ( IF(ISNUMBER(0 + c_), c_, space)e divida.

    =LAMBDA(rows_,
        LET(
            first_and_last_numbers, LAMBDA(input,
                LET(
                    space, " ",
                    split, TEXTSPLIT(
                        TRIM(
                            CONCAT(
                                MAP(
                                    MID(input, SEQUENCE(LEN(input)), 1),
                                    LAMBDA(c_, IF(ISNUMBER(0 + c_), c_, space))
                                )
                            )
                        ),
                        space
                    ) + 0,
                    IFERROR(
                        IF(
                            COLUMNS(split) >= 2,
                            HSTACK(TAKE(split, , 1), TAKE(split, , -1)),
                            EXPAND(split, , 2)
                        ),
                        "None"
                    )
                )
            ),
            DROP(REDUCE("", rows_, LAMBDA(a, c, VSTACK(a, first_and_last_numbers(c)))), 1)
        )
    )(A2:A4)
    

    Fórmula e resultado

    • 0
  6. Solar Mike
    2024-07-06T15:23:39+08:002024-07-06T15:23:39+08:00

    Típico, não resisti ao desafio:

    insira a descrição da imagem aqui

    LEFT(SUBSTITUTE(A2,"Top",),FIND("-",SUBSTITUTE(A2,"Top",),1)-1)*1
    
    SUBSTITUTE(RIGHT(SUBSTITUTE(A2,"Top",),FIND("-",SUBSTITUTE(A2,"Top",),1)),"-",)*1
    

    Não testei além dos exemplos que você deu, mas a classificação de 3 dígitos é deixada para você.

    • -1

relate perguntas

  • Como posso retornar linhas específicas onde EXISTE uma taxa no contrato listado, mas NÃO há taxa no sistema?

  • adicionar automaticamente um campo de referência em uma tabela quando alguns valores são repetidos?

  • percorrer a coluna com a alteração do endereço da célula

  • Pesquise uma string e os valores de saída correspondentes a essa string

  • Existe uma maneira no Excel de contar as ocorrências de um texto específico em uma string, mas também incluir o caractere anterior?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve