Excel VBA复合vlookup
好吧,我看到很多问题和我的问题很相似,但是没有一个是非常精确的,所以答案没有帮助。虽然它可能不完全是一个vlookup的过程是类似的,所以这是最接近的事情,我可以认为作为一个标题 我在文档a中有一列(a)的值,我希望excel遍历每个值,并在文档B中查找(a)列中的相同值。对于找到的每个值,我想做三件事:Excel VBA复合vlookup,excel,vlookup,vba,Excel,Vlookup,Vba,好吧,我看到很多问题和我的问题很相似,但是没有一个是非常精确的,所以答案没有帮助。虽然它可能不完全是一个vlookup的过程是类似的,所以这是最接近的事情,我可以认为作为一个标题 我在文档a中有一列(a)的值,我希望excel遍历每个值,并在文档B中查找(a)列中的相同值。对于找到的每个值,我想做三件事: 我希望它在文档B中找到的每个匹配值的右侧两个单元格中获取值,并将其粘贴到文档A列中值的右侧一个单元格中 我想让它查看文档B中每个匹配值右侧的值3,如果该值是“time”,则在文档A列中的值右侧
=INDEX(B!$C$1:$C$15,MATCH(A!A1,B!$A$1:$A$15,0))
进入工作表A
的B1
或任何值右侧的一个单元格,然后向下拖动
=IF(INDEX(B!$D$1:$D$15,MATCH(A!A1,B!$A$1:$A$15,0))="time","T",INDEX(B!$D$1:$D$15,MATCH(A!A1,B!$A$1:$A$15,0)))
进入工作表A
的C1
或任何值右侧的两个单元格,然后向下拖动
*注意:如果在文档B
中找到的匹配值不是“时间”,则您没有指定希望该值是什么,因此我只使用单元格中的值
=IF(INDEX(B!$E$1:$E$15,MATCH(A!A1,B!$A$1:$A$15,0))>5,INDEX(B!$G$1:$G$15,MATCH(A!A1,B!$A$1:$A$15,0))/INDEX(B!$H$1:$H$15,MATCH(A!A1,B!$A$1:$A$15,0)),INDEX(B!$E$1:$E$15,MATCH(A!A1,B!$A$1:$A$15,0)))
进入工作表A
的D1
或任何值右侧的三个单元格,然后向下拖动
*注意:如果在文档B中找到的匹配值是
而不是>5
,则您没有指定希望该值是什么,因此我只使用单元格中的值
=IF(INDEX(B!$E$1:$E$15,MATCH(A!A1,B!$A$1:$A$15,0))>5,INDEX(B!$G$1:$G$15,MATCH(A!A1,B!$A$1:$A$15,0))/INDEX(B!$H$1:$H$15,MATCH(A!A1,B!$A$1:$A$15,0)),INDEX(B!$E$1:$E$15,MATCH(A!A1,B!$A$1:$A$15,0)))
这是如果您要查找的值位于工作表A
的列中,并且您正在返回工作表B
的C:E
列中的值。首先,我的英语不好。很抱歉但据我所知,我会尽力帮忙的
文档包含以下信息
名称
萨基尔
哈桑
肺门
B在以下信息中添加文档。
姓名索引年龄性别栏5栏6栏7栏8
萨基尔833男1102
肺门620女性11184
努雷4 22女1 4 1
文档可以在B2列中写入以下公式
=IF(VLOOKUP(A2;[DocB.xlsx]Sheet1!$A$2:$H$4;2;FALSE)>5;VLOOKUP(A2;[DocB.xlsx]Sheet1!$A$2:$H$4;7;FALSE)/VLOOKUP(A2;[DocB.xlsx]Sheet1!$A$2:$H$4;8;FALSE);"No Match")
尊重。你想做的每一件事都是从一个简单的“VLOOKUP”开始的,但也有一些是曲折的。为了简化事情,我们应该将范围命名为“A”和“B”。您可以通过选择属于“A”的所有单元格,然后在地址框(屏幕左上角)中键入名称来完成此操作。让我们称之为“RangeA”。同样,选择属于区域B的所有单元格(第一列到第八列;确保不包括标题),并将其称为RangeB。现在我们可以开始:
对于A中的每个值,在B中找到相应的值,并返回
右边的值2”:
这是一个简单的VLOOKUP。在A(可能是B1)右侧的单元格中输入此公式:
说明:在单元格A1中的RangeB范围内查找值。找到一个完全匹配的(这是“假”)。返回第3列中的相应值(右边两个)。将公式一直向下拖动(快捷方式:选中单元格右下角的小正方形时双击)
我想让它看到每个匹配项右边的值3
文件B中的值,如果该值为“时间”,则填写字母
“T”文档A列A值右侧的两个单元格
这是一个VLOOKUP,后跟一个IF。将以下公式中的两个单元格放在A(可能是C1)的右侧,然后像以前一样向下拖动:
=IF(VLOOKUP(A1, RangeB, 4, FALSE) = "time", "T", "")
说明:如前所述查找(但第4列,即“右侧三”)。测试找到的值。如果是“时间”,请在此单元格中输入“T”;否则,输入“”(即无)
如果该值位于中找到的每个匹配值右侧的四个单元格中
文档B>5我希望excel将三个单元格填充到
文档A的A列中值的右侧,公式为
文档B中同一行的(G列/H列)值
找到匹配项,计算比率。使用匹配函数(在工作表的隐藏列中)只查找一次会更快,因此我们有一个对行号的引用(我们需要它三次),但这不是必需的。除非工作表有数千行,否则不会注意到性能差异。根据他的说法,在公式中没有“快速方法”来实现这一点
=if(VLOOKUP(A1, RangeB, 5, FALSE) > 5, VLOOKUP(A1, RangeB, 7, FALSE)/VLOOKUP(A1, RangeB, 8, FALSE), "")
就在这里。请注意,索引(匹配…
(@user2140261的首选方法)可以实现与VLOOKUP
相同的功能,但它涉及两个函数。但是如果您决定创建一个包含MATCH
函数的隐藏列,那么您可以使用INDEX
函数来实现所有其他功能,因为您只使用一个匹配项,这将是最有效的(与为每列重新计算一次或多次相反)
我希望你能从这里找到答案。你看到了吗?哇,这是一个更好/更全面的方法@Floris谢谢你一旦我有足够好的代表支持我,我会这样做的you@SeanConnecticut我之所以使用索引,是因为我觉得可读性是为了知道我从哪个列返回值,而不是从哪个列返回值p巫婆可以吃任何东西