Eu tenho uma ferramenta de pesquisa que estou desenvolvendo no Excel. Na coluna "EU", tenho células, cada uma contendo uma sequência de 124 dígitos. Essas seqüências consistem em 0 e 1. Eu tenho 124 características que produzem o 1 ou 0 ..., e os usuários podem querer procurar por características 1,2,3,4,5 etc. Por simplicidade, digamos que EU1 tem a cadeia 0100100011 ..... e eu quero encontrar qualquer célula que contenha 0100100000 ou possivelmente 0000100010 etc. Em outras palavras, eu quero encontrar qualquer string contendo um "1" em um local de dígito específico, possivelmente vários 1's em vários locais de dígitos .......... Exemplo Eu quero testar se qualquer uma dessas 3 combinações .....
0000010000000001000000000000010010000010000000100000010010010000000000101100100000100000000000000000000000000000000000000100 0000000000001010001000000010010010010010000000100000010010010000000000100100100000100100000100000000000000000000000001000100 0000000000000110000010000010001001010000010000100000010010010000000000100100100001000100000100000000000000000000000001000100
tem 1's nesses locais ......
Dados a base de dados iguais.Valão de dados iguais.Valão de
se houver 1s em outros locais, tudo bem, mas não se a condição de teste tiver 1 e os locais testados tiverem um zero nesse dígito.
Colocando de outra forma, e usando exemplos mais compreensíveis, fingir que minhas cordas têm apenas cinco caracteres, e que minhas primeiras cinco cordas são
EU1 10000
EU2 10001
EU3 11000
EU4 11011
EU5 00001
Eu quero procurar por seqüências de caracteres
onde toda a lista designada de posições de caracteres contém 1
s
comparando cada um deles com uma string de pesquisa variável
Isso contém 1
em todas as posições onde eu quero que haja um 1
.
Zeros na variável são curingas.
Outra maneira de dizer é que a string de pesquisa funciona como uma máscara.
Por exemplo, para encontrar cadeias cujos primeiros dois dígitos 1
s
(não se importa com o resto)
Eu gostaria de especificar 11000
e obter correspondências para as strings EU3 e EU4.
(Isso pode representar uma pesquisa por objetos que são UMA angular E B lue.)
Uma pesquisa sobre 10000
(todos os objetos que são UMA angular)
deve corresponder em todas as cordas
cujo primeiro dígito é 1
, nomeadamente EU1, EU2, EU3 e EU4. 11100
(todos os objetos que são UMA angular E B lue AND C circular)
não deveria ter correspondido,
porque nenhuma string contém 1
no lugar do terceiro dígito.
Por outro lado, 00000
deve combinar todas as cordas,
porque uma string de pesquisa de todos os zeros é um curinga.
Na forma de tabela:
Search string: 11000 10000 11100 00000 ↓↓ ↓ ↓↓↓ EU1 10000 → 1 0000 10000 → 10000 EU2 10001 → 1 0001 10001 → 10001 EU3 → 11 000 → 1 1000 11000 → 11000 EU4 → 11 011 → 1 1011 11011 → 11011 EU5 00001 00001 00001 → 00001 (nenhum) (todos)
fonte
Respostas:
Para simplificar, eu coloco seus dados na coluna
E
, começando na linha 2. Eu coloquei a string de pesquisa no celularD2
. (ClaroD2
e colunaE
deve ser formatado como texto ou você deve digitar uma aspa simples ('
) antes de cada número.)Eu escolhi a abordagem de usar os recursos de pesquisa nativa do Excel. Uma string de pesquisa de
11000
significa que estamos procurando valores onde o primeiro dígito é um1
, o segundo dígito é um1
, e o terceiro até o quinto caractere é qualquer coisa. Como você disse, zeros na variável (string de pesquisa) são curingas.A representação padrão deste curinga é
11???
- então eu coloco celularD3
paraA pergunta não especificou como o (s) resultado (s) deve (m) ser apresentado (s). Uma maneira seria, para cada valor na coluna
E
, para indicar se é uma correspondência. Nós podemos fazer isso procurar cada umE
valor para a cadeia curinga. Se for encontrado,SEARCH
retorna 1, caso contrário, retorna um erro. Para que possamos obter umTRUE
ouFALSE
valor colocandopara dentro
F2
, e arrastando-o para baixo para cobrir todo oE
dados. (Observe queFIND
não permite caracteres curinga.)Mas pode ser mais conveniente ter uma lista dos índices dos valores correspondentes. Podemos conseguir isso usando
MATCH
para pesquisar a coluna. Eu coloquei um 1 no celularG1
ena célula
G2
(ajustando o99
s para corresponder à última linha de dados) e arraste / preencha isso. Isso procura a sequência curinga (que está emD3
) dentro doE
coluna, começando no ponto da partida anterior. Isso retorna o linha número dos jogos; por exemplo, "String D" (11011
que está na célulaE5
), é relatado como 5. Se você quiser que "String D" seja relatado como 4, esse é um ajuste fácil.Aqui estão os resultados para os dados de amostra que você sugeriu:
Claro que as células
D3
eG1
pode ser escondido. E, se você realmente precisa iniciar seus dados na Linha 1, isso pode ser providenciado.P.S. Eu testei isso com valores longos de 124 caracteres, e ambas as partes da resposta parecem funcionar.
fonte
F
ouG
)Digamos que temos dados na coluna eu de EU1 para EU100 . Para encontrar células com seu padrão de correspondência use:
irá mostrar quais linhas contêm correspondências.
fonte