/ / Изберете „не“ на отделен лист - excel

Изберете „не“ на отделен лист - excel

Искам да изберете "не" на отделен лист с vlookup, но не мога да го накарам да работи.

Това е примерът на първия лист:

1 Да кафе 2 Без чай 3 Без мляко 4 Да Вода 5 Да сок

На следващия лист той трябва да показва следното:

1 чай 2 Мляко

Отговори:

0 за отговор № 1

Не знам, че Vlookup ще може да направи каквоти искаш. Тъй като "бихте търсили" Не ", в диапазон с множество" Не "s, vLookup ще връща една и съща стойност отново и отново. Вероятно има решение с уравнение, но аз не съм толкова голям с тези , така че тук е решение за VBA.

Забележка: Предполагам, че „Да“ и „Не“ са в колона А, а типът напитка е в колона Б, подобно на:

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

Код:

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

Числата, които давате във вашия пример, всъщност ли са в данните или това е редът?


0 за отговор № 2

Ето решение, което не е VBA. Обърнете внимание, че при това се използват формули на масив, които трябва да бъдат потвърдени чрез натискане на CTRL + SHIFT + ENTER всеки път, когато клетката се променя, а не просто ENTER. Поставете колоната си „да“ / „не“ от A1: A6 и колоната за напитки от B1: B6. Поставете колона от D1: D6, която само от 1 до 6.

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

След като натиснете CTRL + SHIFT + ENTER, копирайте надолу доредовете отдолу. Това работи, като разгледа всеки възможен удар в колона A. Когато колона A = "не" в този ред, той дава номера на реда на функцията SMALL. SMALL взема масив от числа и изплюва този, който е n-тият най-малък. Така SMALL (СПИСЪК, 2) дава 2-ри най-малък елемент в списъка. След това можете да дадете този номер на реда на функцията Index, която приема колона B и изплюва стойността в дадения ред.

Не препоръчвам да го използвате без да го разбирате; аз изобщо не ви препоръчвам да го използвате, ако не сте запознати с функциите на Array.