/ / Selecione o 'não' em uma folha separada - excel

Selecione o 'não' em uma folha separada - excel

Quero selecionar o "não" em uma folha separada com vlookup, mas não consigo fazê-lo funcionar.

Este é o exemplo da primeira planilha:

1 Sim Café 2 sem chá 3 Sem Leite 4 Sim Água 5 Sim Suco

Na próxima folha, deve mostrar o seguinte:

1 chá 2 Leite

Respostas:

0 para resposta № 1

Não sei se o Vlookup será capaz de fazer o quevocê quer. Como você procuraria "Não", em um intervalo com vários "Não" s, o vLookup retornará o mesmo valor repetidamente. É provável que haja uma solução com uma equação, mas eu não sou tão bom com aqueles , então aqui está uma solução VBA.

Nota: Presumo que "Sim" e "Não" estejam na coluna A e o tipo de bebida esteja na coluna B, semelhante a:

   A       B
1 Yes     Milk
2 No      Water
3 No      Tea
4 Yes     Juice

Código:

Sub Move_NO_Rows()
Dim rawWS As Worksheet, noWS As Worksheet
Dim yesNoRange As Range, cel As Range
Dim lastRow As Integer, noLastRow As Integer
Dim yesOrNo As String

yesOrNo = "No" "If you want to search for the "Yes" rows instead, just change this variable

Set rawWS = ActiveSheet
Set noWS = Sheets.Add
noWS.Name = "No Types"

"Since we added a new sheet, the starting row for your "No" rows is 1
noLastRow = 1

With rawWS
lastRow = .UsedRange.Rows.Count
Set yesNoRange = .Range(.Cells(1, 1), .Cells(lastRow, 1))
For Each cel In yesNoRange
If cel.Value = yesOrNo Then
noWS.Range(noWS.Cells(noLastRow, 1), noWS.Cells(noLastRow, 2)).Value = .Range(.Cells(cel.Row, 1), .Cells(cel.Row, 2)).Value
noLastRow = noLastRow + 1
End If
Next cel
End With

End Sub

Os números que você fornece no seu exemplo estão realmente nos dados ou essa é a linha?


0 para resposta № 2

Aqui está uma solução não VBA. Observe que isso usa fórmulas de matriz, que devem ser confirmadas pressionando CTRL + SHIFT + ENTER cada vez que a célula é modificada, em vez de apenas ENTER. Coloque sua coluna "sim" / "não" em A1: A6 e sua coluna de bebida em B1: B6. Coloque uma coluna de D1: D6, que conta apenas de 1 a 6.

=IFERROR(INDEX($B$1:$B$6,SMALL(IF($A$1:$A$6="no",ROW($A$1:$A$6),""),D1)),"")

Depois de pressionar CTRL + SHIFT + ENTER, copie paraas linhas abaixo. Isso funciona examinando cada ocorrência possível na coluna A. Onde a coluna A = "não" nessa linha, fornece o número da linha para a função SMALL. SMALL pega uma matriz de números e cospe o que é o enésimo menor. Portanto, SMALL (LIST, 2) fornece o segundo menor item da lista. Você pode atribuir esse número de linha à função Índice, que utiliza a coluna B e cospe o valor na linha especificada.

Não recomendo que você use isso sem entendê-lo; não recomendo que você o use se não estiver familiarizado com as funções de matriz.