我想要解决的一个问题是从电子表格中提取行。电子表格有超过1200个条目。我已将它们分成相关的工作表,以便可以使用这些信息。每个单独的代码都是一个工作表
数据样本如
我找到的公式是尝试从单独的工作表运行
INDEX(Master!$A$2:$D$13, SMALL(IF((INDEX(Master!$A$2:$D$13,,4,1)="wap"),
MATCH(ROW(Master!$A$2:$D$13),ROW(Master!$A$2:$D$13)), “”), ROWS(A2:$A$2)), ,1)
失败
MATCH(ROW(Master!$A$2:$D$13),ROW(Master!$A$2:$D$13))
获得可怕的#N / A
我需要一些帮助来解决问题,对解决方案的简要解释会有所帮助。
不幸的是,它必须通过公式来完成,因为我没有VBA查询的访问权限。
答案 0 :(得分:0)
你走了:
=IFERROR(
INDEX(Master!$A$2:$D$13,
SMALL(
IF(
INDEX(Master!$A$2:$D$13,,4)="wap",
INDEX(Master!$A$2:$D$13,,1),
COUNTA(Master!$A$2:$A$13)+1
),
ROWS(A2:$A$2)
),
COLUMN()
)
,"")
必须将其作为数组函数输入。不是单击单元格或按Enter键退出公式,而是按Ctrl + Shift + Enter。
IF函数遍历主阵列第4列中的每个单元格。如果代码匹配,则传递ID。否则,传递主行数加1。这很重要,因为它会在最终的INDEX函数中产生错误,该函数将被转义为"" (一个空白的字符串)。
SMALL函数输出生成的数组中的当前行或键。最终的INDEX函数获取当前列和所选行的交集。只需将每个列上的列复制到每个工作表上,然后按下应返回的行数。任何其他行(或列)都将传递空字符串。为了安全起见,我要复制1200行,但这可能会减慢您的处理速度(如果确实如此,只需将计算模式设置为手动)。