【发布时间】:2018-11-08 07:08:58
【问题描述】:
给定一个如下图所示的 Excel 表格
我知道如何使用 VLOOKUP 和 MATCH 来访问数据元素,使用“符号名称”表示行和列——后者是列名,前者是搜索键。
至少,我知道如何在 Excel 公式中做到这一点。
=VLOOKUP("RowA",Table2,MATCH("ColA",Table2[#Headers],0))
但这很冗长。
我想将其缩写为 UDF(用户定义函数)
(TRC代表“表格行列”)
骨架看起来像
Function TRC(tbl As Range, rowName, colName)
'in Table tbl,
'looks up value whose row key is rowVal,
'and whose column heading is colVal
...
End Function
对于一个半现实的示例,可能如下调用,其中列是特定的 CPU 模型,行是 uarch 参数。
Cache_Size_in_Bytes = TRC(Cache_Param_Table,"Line_Size","Pentium4")
或放在一个单元格中的公式中
= TRC(Cache_Param_Table,"Line_Size","Pentium4")
不幸的是,我没有设法让任何工作。
帮助?
【问题讨论】:
-
你的意思是rowName和colName是谁的值?
-
"rowName 和 colName 谁的值?" - 是的。更准确地说,我的意思是表格的单元格(作为参数 tbl 传递)。其列是 #Headers 行中具有字符串 colName 值的列,并且其行具有参数 rowName 的值作为 - 在本示例中 - 标题为“RowKey”的列的值。 // 扩展版本可能会传入要用于 RowKey 的列标题名称。
-
听起来你可以在 tbl 上使用 index 并匹配 rowName 和 colName。这将返回您需要的行和列,从而返回值。
-
@QHarr - 是的,我在公式中同时使用了 VLOOKUP/MATCH 和 INDEX-MATCH。我只是无法将这些公式转换为 VBA。
标签: excel vba user-defined-functions