Fórmula do Excel para comparar um único valor em uma célula com vários valores em outra célula

0

Eu tenho um valor na Coluna A, que quero comparar com vários valores na coluna B e, dependendo desse valor, coloque a resposta na coluna C.

Por exemplo, usando a tabela abaixo, ele procura na coluna B valores menores ou iguais a 12 e coloca a resposta na mesma ordem na coluna C.

Column A     Column B            Column C
12           0,12,13,14          Yes, Yes, No, No    
101          101,102,103,104     Yes, No, No, No

Como posso fazer isso no Excel?

    
por Raw 22.08.2014 / 14:39

3 respostas

1

Isso faz exatamente o que você quer.

Option Explicit

Sub DoTheThing()

Dim row As Integer
row = 1 ' WHAT IS THE STARTING ROW

Do While (Range("A" & row).Value <> "")

    Dim vals() As String
    vals = Split(Range("B" & row).Value, ",")

    Dim lookUpValue As String
    lookUpValue = Range("A" & row).Value

    Dim result As String
    result = ""

    Dim i As Integer

    For i = 0 To UBound(vals)

        If CSng(lookUpValue) >= CSng(vals(i)) Then
            result = result & "Yes, "
        Else
            result = result & "No, "
        End If

    Next i

    result = Trim(result)
    result = Left(result, Len(result) - 1)

    Range("C" & row).Value = result

    row = row + 1
Loop

End Sub

Minha planilha parecia

EdepoiseucorrooVBa

O Excel manteve a formatação das colunas como number . Deve permanecer como Text !

    
por 22.08.2014 / 15:14
1

A maneira que eu gostaria de começar seria dividir o problema em um monte de colunas, cada uma com uma parte do problema. Por exemplo:

     A  B                C  D   E    F   G    H    I   J    K    L   M   N
1   12  0,12,13,14       2  5   8    0   12   13   14  Yes  Yes  No  No  Yes, Yes, No, No
2  101  101,102,103,104  4  8  12  101  102  103  104  Yes  No   No  No  Yes, No, No, No

Estas são as expressões de C1 a N1:

C1 =FIND(",",B1)               D1 =FIND(",",B1,C1+1)      E1 =FIND(",",B1,D1+1)
F1 =LEFT(B1,C1-1)+0            G1 =MID(B1,C1+1,D1-C1-1)+0
H1 =MID(B1,D1+1,E1-D1-1)+0     I1 =RIGHT(B1,LEN(B1)-E1)+0
J1 =IF(F1<=$A1,"Yes","No")     K1, L1, M1 (copy from J1)
N1 =J1&", "&K1&", "&L1&", "&M1

Se não for óbvio, o "+0" é uma maneira prática de forçar um valor de texto em um número, de modo que as comparações em I, J, K e L sejam feitas como comparações numéricas em vez de como texto.

Para C2 a N2, copie de C1 a N1.

Se você não quiser usar colunas extras, poderá unir os resultados da versão com várias colunas em uma expressão gigante e complicada em uma única coluna. É mais fácil fazer isso em várias etapas. Por exemplo, o primeiro passo seria combinar as expressões FIND com as expressões de string. Aqui está um código para isso:

F =LEFT(B1,FIND(",",B1)-1)+0
G =MID(B1,FIND(",",B1)+1,FIND(",",B1,FIND(",",B1)+1)-FIND(",",B1)-1)+0
H =MID(B1,FIND(",",B1,FIND(",",B1)+1)+1,FIND(",",B1,FIND(",",B1,FIND(",",B1)+1)+1)-FIND(",",B1,FIND(",",B1)+1)-1)+0
I =RIGHT(B1,LEN(B1)-FIND(",",B1,FIND(",",B1,FIND(",",B1)+1)+1))+0

Eles são bem horríveis, porque os usos de E usam D, que usa C, e são usados várias vezes por G, H e I. Colocar todos os resultados intermediários em colunas ocultas salva muitas expressões duplicadas. / p>

As coisas pioram se você quiser ir além de quatro números separados por vírgulas na coluna B, mas a maneira de adicionar colunas deve ser bastante óbvia.

Permitir que B tenha um número variável de números separados por vírgula não é tão óbvio. O truque é adicionar algumas instruções IF, testando as condições de erro. Isso levanta um ponto final, que isso não inclui nenhuma verificação de erros além do que está embutido no Excel. Uma planilha robusta deve incluir pelo menos a verificação de erros alguns .

    
por 23.08.2014 / 08:18
0

Eu usaria o suplemento de consulta de energia para isso. Tem comandos dividir e combinar que podem converter texto delimitado, por ex. 0,12,13,14 em uma lista e voltar.

Eu criei um protótipo que você pode ver ou baixar - é a "demonstração do Power Query - compare um único valor em uma célula com vários valores em outro cell.xlsx" no meu One Drive:

link

Dentro desse arquivo incluí duas soluções - uma para comparar usando "menor que ou igual a" e outra para comparar usando lógica "entre".

São necessárias algumas etapas de consulta para chegar lá e, para algumas etapas, o código gerado precisa ser editado. Mas para 90% das etapas, basta clicar na interface do usuário do Power Query.

    
por 25.08.2014 / 06:09