我有一些工作表,其中交易号码互相引用。我需要一个公式,为每个交易列出哪些其他交易与之相关。每个交易号码都有一个四字母代码(例如EXPE表示费用,TRAV表示旅行等),然后是三位数字。这是事务标识符,每个事务都有唯一的标识符,例如。 EXPE-001,TRAV-010等。每个交易都可以连接到其他交易。因此,例如,如果某个费用与某个旅行相关,则EXPE-001可以连接到TRAV-010。
我的数据设置如下表所示。 “关联事务”列是我列出特定事务所涉及的所有事务的位置,而“其他事务#”列是Excel将输入与此特定事务相关的所有其他事务的位置。 Other Transaction #s列中的单元格是我需要Excel为我自动填充的。
在费用工作表中
Trans. # Date Cost Related Transactions Other Transaction #s
EXPE-001 2016-07-10 $1.12 TRAV-010 ____, ____, ____
EXPE-002 2016-07-10 $18.41 TRAV-010 ____, ____, ____
EXPE-003 2016-07-10 $7.80 TRAV-010 ____, ____, ____
在旅行工作表中,
Trans. # Date Cost Related Transactions Other Transaction #s
TRAV-001 2016-07-10 $180.01 EXPE-001, EXPE-002 ____, ____, ____
TRAV-002 2016-07-10 $31.16 EXPE-002, EXPE-003 ____, ____, ____
TRAV-003 2016-07-10 $190.49 EXPE-003 ____, ____, ____
如您所见,每个交易都可以在任意数量的其他交易中引用,每个交易也可以引用任意数量的其他交易。这就像一个大网。让这更令人困惑的是Trans中的数据。 #实际上存储为一个数字,例如。 1,2,3,仅显示其代码和前导0的适当数量。
我知道如何获取数字,添加交易代码,并用零填充它。我使用TEXT
(例如,"*EXPE-"&TEXT(A12, "000"&"*"
使用星号通配符,以便子字符串可以出现在单元格中的任何位置。)
无论如何,我一直在使用MATCH
函数来获取行范围内特定字符串的行号。我一直在玩INDEX
,IF
,SMALL
函数。但这太令人困惑了,部分原因是因为我认为涉及了很多函数,并试图使这个函数成为一个函数(通过按CTRL + SHIFT + ENTER),以便Excel列出多个范围内的多行。到目前为止,我的尝试都让我得到了#REF !,#N / A,#VALUE或来自Excel的直接错误消息。对于其中只有6个事务的表,我将使用3-8的行范围(有两行标题)。在各个部分中,我得到以下内容,所有这些都不起作用或只做一小部分工作:
=INDEX(A3:A8, SMALL(IF((INDEX(A3:A8, , $C$3, 1)="EXPE" & TEXT($A$3, "000")), ROW(A3:A8), ""), ROWS(A19:$A$19)), , 1)
=MATCH(A8, A3:A8)
=INDEX(A3:P37, MATCH(A8, A3:A37))
但我绝对迷失在此。似乎我甚至无法让第1步工作。我甚至没有想出如何在一个工作表上执行此操作,更不用说多个工作表了。有没有人知道如何解决这个疯狂的公式?
答案 0 :(得分:0)
你在说Trans。 #column被格式化为分别显示1,2,3作为TRAV-001,TRAV-002,TRAV-003?如果是这样,MATCH将只匹配1,2,3的行。
我要么输入数据作为TRAV-001 ...或者添加另一列,输入1并使另一列正确格式化交易号(= EXPE - “& TEXT(A12,”000“&” *“)。或者,只需匹配1,2,5等