我在 Excel 中有一个表格,其外观大致如下:
Test1 100 test2 200
Test3 110 test4 210
Test5 120 test6 220
我想要一个函数,给定测试 1 作为输入,将返回 100,给定测试 2 将返回 200
LOOKUP、(V/H)LOOKUP 和 INDEX 都坚持索引列使用单个连续数组。
答案1
假设您想要返回的值始终是数字,我认为这会起作用:
=IFERROR(VLOOKUP(INPUTCELL,$A$1:$B$3,2,0),0)+IFERROR(VLOOKUP(INPUTCELL,$C$1:$D$3,2,0),0)
这只适用于 Excel 2007,但可以针对 2003 进行修改。可能有更有吸引力的方法,但这是我首先想到的。请注意,如果“测试 1”在两列中,则它将添加两个相应的值。
更新答案: 正如其他评论者所建议的那样,我会重新评估您的电子表格的布局。假设您无法更改它,我看到的唯一可扩展的解决方案是通过 VBA。我不是 VBA 专家,所以可能有更有效的方法来编写此解决方案,但这就是我得到的结果:
- 按 Alt+F11 打开 VBA 编辑器。
- 在 VBA 编辑器中单击插入>模块。
- 粘贴以下代码:
公共函数 GetValue(rngSearch 作为范围,rngInput 作为范围)作为变体 暗淡单元格作为变体 对于 rngSearch 中的每个单元格 如果 cell.Value = rngInput.Value 则 获取单元格值 = 单元格偏移量(0,1) 退出 万一 下一个 结束函数
4 为了使用该函数,请在所需单元格中输入“=GetValue(SearchRange, InputCell)”(不带引号),其中 InputCell 是显示“测试 1”、“测试 2”等的单元格,SearchRange 是您正在搜索的区域。
您需要启用宏才能使其工作。
答案2
如果您使用 IF() 函数,那么获得您所要求的内容就是一项简单的任务。