Искам да изберете "не" на отделен лист с 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.