首先,您需要对数据进行一些清理,因为您希望所有这些电话号码都没有科学记数法。这可能看起来像自定义数字格式 0(根据需要的位数,没有小数位或逗号),但您需要找回在 901 之后丢失的数字,例如。
完成后,假设您的输入表名为“输入样本”然后在所需的输出表上,将 A 到 O 列的列标题复制到第 1 行。在 O2 中,放置以下公式,这将创建您的列表电话号码按出现顺序:=arrayformula(transpose(split(textjoin(" ",false,'Input Sample'!O2:X)," ")))
[此公式所做的是将电话号码列表放在一起,其中没有空格,用空格分隔,跳过任何空的,将其分开,并将其垂直定位。]
剩下的工作是编写与电话号码相关的字段列表。下面还有其他方法。由于在您的列表中似乎没有两个人拥有相同的电话号码(一旦您清理了这些指数),以下工作。返回输出表的单元格 A2,放置公式=query('Input Sample'!A$2:X$59,"Select A, B, C, D, E, F, G, H, I, J, K, L, M, N"&" where O="&O2&" or P="&O2&" or Q="&O2&" or R="&O2&" or S="&O2&" or T="&O2&" or U="&O2&" or V="&O2&" or W="&O2&" or X="&O2,0)
并将其向下拖动,直到有电话号码为止。您将取回与该电话号码对应的列值。
请注意,这种方法会跳过没有电话号码的任何人,这似乎与您的目标一致。
编辑:确实可以在没有 QUERY 的情况下完成,这将减轻重复和大量搜索可能出现的问题。像以前一样生成电话号码列。为简单起见,通过输入 Y2=counta(O2:X2)
并将其向下拖动,在输入表中增加包含电话号码数量的 Y 列。在所需输出纸的 A2 中,放置以下内容:
=transpose(split(arrayformula(textjoin("&",false,iferror(rept('Input Sample'!A2:A&"&",'Input Sample'!$Y2:$Y)))),"&"))
然后将其直接拖过 N2。这个工作原理是建立一个字符串,其中包含由“&”分隔的重复条目(从不在字段中出现),其中每个条目出现的次数是其原始行中包含电话号码的次数,然后将所有这些放在一起,将它们分开并垂直定向。iferror 处理没有任何数字的人。当我使用这种方法时,我在最右边的列和底部看到了一些时髦。正确添加更多列以防止转置丢失内容或修剪多余的分隔符(这使公式更难读)似乎没有帮助。[REPT 和可能会起作用的字符串有一些限制,尽管我很难在表中它们所做的部分中具体说明原因。]
主要编辑:这是一个更简单的版本,更可靠,因为它不需要 QUERY(对重复项很挑剔)或 REPT 和密集的字符串处理(这似乎遇到了限制或我的错误代码)。
第 0 步:用 Y 列为上述音素数增加输入(将 Y2=counta(O2:X2)
从 Y2 向下拖动),然后添加带有第一个音素索引的 Z 列。在 Z2 中放置=if(Y2=0,1000000, 1+sum(Y$2:Y2)-Y2)
并按 Y2 对第 2 行进行排序。由于排序是升序的,因此除了将无电话号码的条目置于无害的底部之外,其他所有内容都将保持不变。
第 1 步:如上所述,将 A 到 N 列的列标题复制到结果表中,并为 O 列提供一个标题,如“电话”。=arrayformula(transpose(split(textjoin(" ",false,'Input Sample'!O2:X)," ")))
在 O2 中按上述方法获取这些数字。
第 2 步:在 P1 中放置标题“源”,该列将告诉在原始条目块中的何处可以找到该行的值。在 P2 位置=IFERROR(MATCH(ROW()-1,'Input Sample'!Z$2:Z,0),P1)
并将其向下拖动。这基本上说明如果我是这组电话号码的第一行,很好,使用它,否则,我必须来自与我上面的条目相同的行。
第 3 步:现在您可以获取所有数据。在 A2 中,=index('Input Sample'!A$2:A,$P2)
将其穿过 N 列并向下拖动到数字为止(在您的情况下为第 198 行)。