我在查找允许我获取数据列表并返回与参考单元格相关的所有值的函数时遇到了一些麻烦。它的概念就像Vlookup一样,除了Vlookup只返回它看到的第一个值。
我考虑过在我的列表中使用数据透视表和/或使用过滤器,但由于工作簿的复杂性,我遇到了问题。
这基本上就是我的工作簿的样子:
A B C
1 Pen Blue 200
2 Marker Red 150
3 Pen Black 180
4 Pen Green 170
5 Marker Green 125
我试图找到一个函数来回复:
A B C
1 Pen Blue 200
2 Pen Black 180
3 Pen Green 170
我需要它做的就是将A列的值识别为“Pen”并在B列中带回颜色.C列然后我可以使用Vlookup来获取。
我觉得我错过了一些东西来帮助别人理解并能够帮助我,但我无法确定它是什么......如果你需要别的东西作为澄清让我知道 < / p>
答案 0 :(得分:2)
这可以使用数组公式完成。
首先,在第一列填写数字1到&#34; Pen&#34;在您的查找范围内。
然后,输入公式:
=INDEX(A$1:A$5,SMALL(IF($A$1:$A$5="Pen",ROW($A$1:$A$5),""),$A11))
其中$ A11是从第一步开始枚举的单元格。
然后按ctrl + shift + enter使其成为数组公式。
&#34; if&#34;返回一个行号数组,其中单元格值是&#34; Pen&#34; (如果需要,显然可以更改为其他值)。然后小的返回第n个最小值,这就是为什么我们需要第一列为数字1到#34; Pen&#34;在范围内。然后索引返回该行的指定范围内的结果单元格。请注意,此公式假设您的表格从A1开始(根据您的示例),但如果情况并非如此,则可以轻松调整。
然后你可以将它向右和向下拖动,只要你将$保持在现在相同的位置,公式就会适应。
输出看起来像(假设你像我一样从A11开始):
A B C D
11 1 Pen Blue 200
12 2 Pen Black 180
13 3 Pen Green 170
答案 1 :(得分:1)
您可以连接a和b列中的值 = A1&安培;&#34;&#34;&安培; B1 对于第一行(并将其放下) 然后,您可以使用计算列创建一个轴 我添加了一个逗号,以便您可以在使用data-&gt;的单词后将其拆分。 text to columns-&gt; delimited-&gt; comma-&gt;光洁度
答案 2 :(得分:1)
由于你对vba没问题,你可以将所需的所有值与其他值一起放在一个数组中。由于我不确定您拥有多少数据,因此我会做一个初步的。
sub arrayFiller()
dim i as integer
dim MyArr() As string
dim nbOfRows as long
nbOfRows = Sheets("Sheet1").cells(SHEET.Rows.Count, 1).End(xlUp).Row
Redim MyArr(nbOfRows , 3) 'Enough rows for you
for i = 1 to nbOfRows 'dynamic so it works even if you change the list size
if Sheets("Sheet1").range("A" & i).Value = "Pen" Then 'Change Pen to a dynamic reference or something else
MyArr(i - 1, 0) = Sheets("Sheet1").range("A" & i).Value
MyArr(i - 1, 1) = Sheets("Sheet1").range("B" & i).Value
MyArr(i - 1, 2) = Sheets("Sheet1").range("C" & i).Value
end if
next i
'Now to empty to sheet 2
for i = 1 to Ubound(MyArr)
Sheets("Sheet2").Range("A" & i).Value = MyArr(i - 1, 0)
Sheets("Sheet2").Range("B" & i).Value = MyArr(i - 1, 1)
Sheets("Sheet2").Range("B" & i).Value = MyArr(i - 1, 2)
Next i
End sub
你现在应该填充数组。您可以在任何地方清空它或者从数组中查询值以进行更多操作。