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 / 76923684
Accepted
Ellka
Ellka
Asked: 2023-08-18 01:02:14 +0800 CST2023-08-18 01:02:14 +0800 CST 2023-08-18 01:02:14 +0800 CST

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?

  • 772

Eu tenho uma planilha contendo 98 linhas de strings diferentes que são sequências de visitas masculinas/femininas registradas usando apenas "M" e "F". Estou tentando encontrar a frequência de visitas masculinas seguidas de visitas masculinas nessas sequências que apareceriam nas strings como "MM". No entanto, usando os métodos que conheço no Excel, atualmente ele perde algumas ocorrências porque depois de encontrar caracteres correspondentes, ele os ignora e passa para o próximo, enquanto eu preciso que ele sempre considere o último caractere. Por exemplo, MMM seria primeiro um macho seguido por um macho, mas é novamente um macho seguido por outro macho. Por exemplo, uma célula inclui "MMMMMMMMM", usando os métodos que conheço no Excel, ela conta apenas como 3 ocorrências porque, ao encontrar "MM", ela passa para o restante da string. Mas no meu cenário seriam na verdade 6 ocorrências de um macho seguidas de um macho, já para a sequência eu sempre considero o último visitante. Existe alguma maneira de automatizar isso usando uma fórmula ou mesmo VBA ou macro etc no Excel? Veja o exemplo abaixo de alguns registros das minhas colunas A e B que possuo atualmente e da coluna C que gostaria de adicionar para a frequência de visitas MM em cada sequência:

Dia Seqüência Contagem de MM
1 MFFFM 0
2 FMMM 2
3 FF 0
4 MMMMM 4
5 M 0
6 MFMMMFF 2

Até agora eu tentei:

Para todas as células: =SUM(LEN(B2:B7)-LEN(SUBSTITUTE(B2:B7,"MM","")))/LEN("MM") =SUMPRODUCT(--(ISNUMBER(FIND("MM", B2:B7)))) =COUNTIF(B2:B7, "*MM*")

Para cada célula: =LEN(B2)-LEN(SUBSTITUTE(B2,"MM","")) =MATCH(2,1/(MID(B2,SEQUENCE(LEN(B2)),2)="MM"))

No entanto, quase todas essas abordagens contam apenas cada ocorrência de MM e depois passam para os próximos caracteres. Alguns deles também contam apenas as células que contêm uma ocorrência de MM. Existe um método no Excel que pode contar as ocorrências de MM na string de cada célula, considerando também o caractere anterior na string? Muito obrigado por qualquer entrada!

excel
  • 3 3 respostas
  • 56 Views

3 respostas

  • Voted
  1. Best Answer
    JvdV
    2023-08-18T01:05:45+08:002023-08-18T01:05:45+08:00

    Boa pergunta. Uma opção pode ser:

    insira a descrição da imagem aqui

    Fórmula em C2:

    =MAP(B2:B7,LAMBDA(s,SUM(LEN(TEXTSPLIT(s&"FM","F",,1))-1)))
    

    Ou, se você sabe que as strings não têm mais de 99 caracteres, evite LAMBDA()e talvez use algo como:

    =MMULT(N(MID(B2:B7,SEQUENCE(,99),2)="MM"),ROW(1:99)^0)
    

    Se acontecer de você ser forçado a usar funções legadas, talvez:

    =MMULT(N(MID(B2,TRANSPOSE(ROW(1:99)),2)="MM"),ROW(1:99)^0)
    

    E confirme atravésCtrlShiftEnter

    • 4
  2. Scott Craner
    2023-08-18T01:22:23+08:002023-08-18T01:22:23+08:00

    Outra opção pesada:

    =IFERROR(REDUCE(0,SEQUENCE(LEN(B2)-1,,2),LAMBDA(a,b,IF(AND(MID(B2,b,1)="M",MID(B2,b-1,1)="M"),a+1,a))),0)
    

    insira a descrição da imagem aqui

    • 2
  3. CDP1802
    2023-08-18T01:33:50+08:002023-08-18T01:33:50+08:00
    Option Explicit
    
    Sub countMM()
        Dim regex, c
        Set regex = CreateObject("VBScript.Regexp")
        With regex
            .Global = True
            .Pattern = "M(?=M)"
        End With
        With Sheet1
            For Each c In .UsedRange.Columns(2).Cells
                If c.Row > 1 Then c.Offset(, 1) = regex.Execute(c).Count
            Next
        End With
    End Sub
    
    • 1

relate perguntas

Sidebar

Stats

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

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

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

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +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