【发布时间】:2018-05-30 12:45:12
【问题描述】:
我在excel中有以下公式(我过去创建的),
=IFERROR(INDEX(Tasks!$H$2:$H$65536;SMALL(IF(A2=Tasks!$A$2:$A$65536;ROW(Tasks!$A$2:$A$65536)-ROW(Tasks!$A$2)+1);ROW($1:$1)));"")
该公式按我的意愿工作,但每个月 a 列都在变化,例如,这里的“A”列可能是下个月的“C”列,因此行数正在变化。我正在尝试修改我不必逐月调整的公式。
为此,我首先在网上找到了一个 VBA 脚本:
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function
因此,如果我输入例如:
=Col_Letter(COLUMN(Table8[[#Headers];[ID]])) 它会给我字母“B”,因为这个标题可以在“B”列中找到。
因此,利用这个 VBA 脚本的优势,我试图创建一个公式,每次都会调整原始公式中的列字母。
所以这个公式:
=("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & "2" & ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1) is giving me this as the result Tasks!$H$2:$H$65536.
什么是公式的一部分,所以我认为它很好。
这是我试图以这种方式重新创建的整个公式:
=Index((("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW() & ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1);SMALL(IF((((Col_Letter(COLUMN(Table8[[#Headers];[ID]])) & ROW()) & "=" & (("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"& ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1))));Row((("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"& ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1)))-ROW(("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"))+1);ROWS($1:$1))))
【问题讨论】:
-
公式有什么问题?你有错误吗?它返回的内容是否与预期不同?
-
我已经添加了错误信息
标签: excel excel-formula