【发布时间】:2016-07-26 01:47:46
【问题描述】:
我有一些带有相互引用的交易编号的工作表。我需要一个公式,为每笔交易列出与之相关的其他交易。每个交易编号都有一个四字母代码(例如 EXPE 表示费用,TRAV 表示旅行等),然后是一个三位数字。这是交易标识符,每个交易都有一个唯一的标识符,例如。 EXPE-001、TRAV-010 等。每个事务都可以连接到其他事务。因此,例如,如果某项费用与某次旅行有关,则 EXPE-001 可以连接到 TRAV-010。
我的数据如下表所示。相关交易列是我将列出与特定交易相关的所有交易的地方,而其他交易#s 列是 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 步工作。我什至还没有弄清楚如何在一个工作表上执行此操作,更不用说多个工作表了。有人知道如何解决这个疯狂的公式吗?
【问题讨论】:
-
好吧,我从不同的来源拼凑了一些解决方案:在这里(谢谢,布鲁斯!),在网上,我自己的测试和咕哝、流汗和恳求 Excel,并想出了这个:
="EXPE-"&TEXT(INDEX(credits_transactionnumbers, SMALL(IF("EXPE-"&TEXT(A29,"000")=L3:L37, ROW(L3:L37)-MIN(ROW(L3:L37))+1, ""), ROW(A1))),"000")其中,如果我放入不同的单元格并每次增加 A1 (A2, A3, ...) 会给我坐标。我现在唯一需要的是能够将这些值放在一个长的、以逗号分隔的字符串中的一个单元格中,并在 #NUM! 之前停止。取得更多进展!