Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 有了VLOOKUP,COL_INDEX_NUM还有其他选项吗?_Excel_Excel Formula_Vlookup - Fatal编程技术网

Excel 有了VLOOKUP,COL_INDEX_NUM还有其他选项吗?

Excel 有了VLOOKUP,COL_INDEX_NUM还有其他选项吗?,excel,excel-formula,vlookup,Excel,Excel Formula,Vlookup,当前代码: VLOOKUP("*"& SPID &"*",Carriers,6,FALSE) 我目前在一个动态电子表格上有26个编号的COL_INDEX_NUMs,正在进行一些更新。如果我需要在列之间添加更多的列,我目前必须对所有的VLOOKUP公式重新编号以匹配 在我的主工作表中,我可以轻松地构建它,第一个数据单元是col_index_num 2,一直到26。当我需要在中间添加另一个单元格时,我必须单独重新调整所有这些公式并进行审核,以确保它们都匹配 是否有一种方法可以使其动

当前代码:

VLOOKUP("*"& SPID &"*",Carriers,6,FALSE)
我目前在一个动态电子表格上有26个编号的COL_INDEX_NUMs,正在进行一些更新。如果我需要在列之间添加更多的列,我目前必须对所有的VLOOKUP公式重新编号以匹配

在我的主工作表中,我可以轻松地构建它,第一个数据单元是col_index_num 2,一直到26。当我需要在中间添加另一个单元格时,我必须单独重新调整所有这些公式并进行审核,以确保它们都匹配

是否有一种方法可以使其动态化,或者这只是一种需要更好规划的功能

我在网上找到的唯一一件事就是那些提到VBA编码的网站,我无法将其合并

非常感谢

编辑:我确实包含了代码,但实际上这更多的是一个关于VLOOKUP的问题。我发帖是为了确保每个人都理解我提出的关于6的位置的问题

分辨率:

=INDEX(Carriers,MATCH(SPID,INDEX(Carriers,0,1),0),MATCH(A3,INDEX(Data!1:1,1,0),0))
这个公式简化了我的工作。VLOOKUP正在做我想让它做的事情,但是修改了一个动态的新文档,导致了超出必要的工作。通过使用索引公式作为我在下面选择的答案,这允许公式在列移动时跟踪列,而无需我停止和调整

Carriers=名为data的工作表上的所有数据减去标题。
数据!1:1=我的标题在同一张纸上。
SPID=调用信息的4位字母数字

我通过移动一列并添加另一列来进行测试。它保存着这些信息。为了测试以确保这不是一个侥幸,我创建了另一张表来查看差异。旧表出错,而新表显示的信息正确


我希望这对别人有帮助

使用索引公式而不是VLOOKUP

例如,
=索引(载体,匹配(“*”&SPID&“*”,$A:$A,0),匹配(“MyColumnHeader”,1:1,0))

  • 第一个参数是引用表-如果需要,可以插入额外的列
  • 第二个参数是您正在搜索SPID编号的列(不必是第一列)——这将返回行号
  • 第三个参数是您正在搜索的列标题-这将返回列编号
一个好的参考网站是:

编辑:
作为更新,上面的公式引用了工作表的A列和第1行,而不是范围。
=索引(载体,匹配(“*SPID*”,索引(载体,0,1),0),匹配(“MyColumnHeader”,索引(载体,1,0),0))


该公式引用了使用
索引(Carriers,0,1)
的运营商第1列和使用
索引(Carriers,1,0)
的运营商第1行,使用索引公式代替VLOOKUP

例如,
=索引(载体,匹配(“*”&SPID&“*”,$A:$A,0),匹配(“MyColumnHeader”,1:1,0))

  • 第一个参数是引用表-如果需要,可以插入额外的列
  • 第二个参数是您正在搜索SPID编号的列(不必是第一列)——这将返回行号
  • 第三个参数是您正在搜索的列标题-这将返回列编号
一个好的参考网站是:

编辑:
作为更新,上面的公式引用了工作表的A列和第1行,而不是范围。
=索引(载体,匹配(“*SPID*”,索引(载体,0,1),0),匹配(“MyColumnHeader”,索引(载体,1,0),0))


这个公式引用了使用
索引(Carriers,0,1)
的Carriers第1列和使用
索引(Carriers,1,0)
的第1行。您可以使用匹配公式来查找正确的列索引:而不是
6
,您可以放置类似
匹配(“ColumnTitle”,1:1,0)
。其中“ColumnTitle”是第1行中的标签。另一个注意事项:如果您的搜索范围不是从A列开始,则整行引用需要更改为从与搜索范围相同的列开始;
$B$1:$AZ$1
而不是在Vlookup公式中硬编码
6
,请使用单元格引用。创建另一个工作表(隐藏,如果需要的话)上的列映射。然后,您应该能够更新“映射”“仅限工作表,所有公式都将引用该工作表上的值,只要这些值发生更改,公式的结果就会更改。您可以使用匹配公式来查找正确的列索引:而不是
6
,您可以放置类似
match(“ColumnTitle”,1:1,0)
,其中“ColumnTitle是第1行中的标签。另一个注意事项:如果您的搜索范围不是从A列开始,则整行引用将需要更改为从与搜索范围相同的列开始;
$B$1:$AZ$1
而不是在Vlookup公式中硬编码
6
,请使用单元格引用。创建另一个工作表。”(隐藏,如果需要的话)上的列映射。然后,您应该能够更新“映射”只有工作表,所有公式都会引用该工作表上的值,只要它们发生变化,公式的结果就会发生变化。感谢@Darren Bartrup Cook!乍看之下,我认为这太复杂了,无法理解,但使用Excel的内置工具来解释每个字段,我意识到这并没有那么复杂。我花了一段时间才意识到这一点我对索引方式很有信心。虽然非常通用,但值得付出努力。感谢@Darren Bartrup Cook!乍看之下,我认为这太复杂了,无法理解,但使用Excel内置的工具来解释每个字段,我意识到它没有那么复杂。我花了一段时间才对索引方式doi有信心很好,但是很通用,所以值得努力。