【发布时间】:2015-06-17 13:15:43
【问题描述】:
我正在为一位客户做一些工作,他们会收到一份关于客户和地区的每周报告(工作表中的两列,A 代表客户,B 代表地区)。 * 为了清楚起见,我省略了此电子表格中的其他列
他们需要将此电子表格上的价格与参考电子表格(我们称之为价格)相匹配。每个客户和区域组合都会产生一个存储在上述参考电子表格中的特定价格(在此参考工作表 [价格] 中,A 列是客户,B 列是区域,C 列是 B 区域中 A 客户的价格) .
我想做的是:
基于 A1(客户)和 B1(地区),C1 应该是(参考工作表上的价格查找值)。
传统的 vlookup 功能不起作用,因为需要满足多个条件(即我们可能对不同地区的同一客户有不同的价格)。
我尝试了以下没有成功
Dim ULastRow As Long
ActiveWorkbook.Worksheets(ActiveSheet.Name).UsedRange
ULastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
Range("C2").FormulaR1C1 = _
"=Index(Range("C:C"), Match(Range("Prices!C1"), Range("Prices!C2:B34"), 0), 0)"
Selection.AutoFill Destination:=Range("C2:C2" & ULastRow)
有关数据示例,请参阅以下链接(不幸的是,我无法在线添加它们:
客户得到什么:https://copy.com/EBABGl2EFjyFWcIH
“价格”或参考数据https://copy.com/oSSJuu7Dk4ox84tz
任何建议将不胜感激。
提前致谢!
【问题讨论】:
-
我理解正确吗?:您有一个包含 A、B 和 C 列及其各自信息的工作表。而你想根据A和B来选择C的值?
-
为什么需要 VBA 而不仅仅是 Excel 中的一些查找函数?
-
您可以输入带有索引/匹配的数组公式,以根据多个条件进行查找。这将是公式,您可以将其转换为 VBA。我只是弥补并说您试图在 F 列中返回一些内容:
=index(F:F,match(A1&B1,CustomerRange&RegionRange,0))并使用 CTRL+SHIFT+ENTER 输入 -
daZza,好问题,我会在编辑中澄清。谢谢!
-
仍然不完全确定我是否正确理解了您的情况:P 因此,您有 1 个工作表,其中只有 A 列和 B 列,除此之外,您还有另一个名为“价格”的工作表,它是 A 列,B和C?在这种情况下,第一个工作表将完全没用,因为您将所有信息都存储在“价格”中。从该列中选择 C 列应该像我下面的答案一样工作。你试过了吗?