【发布时间】:2021-01-19 22:02:05
【问题描述】:
【问题讨论】:
-
您可以使用 PowerQuery
-
- 使用公式为最后一列之后的第一行中的第一个条目创建一行。 - 确保您在一行中获得所需的所有列。 - 选择此行中的单元格,输出以及空白行,直到下一条记录。 - 复制这些单元格 - 向下拖动或选择直到最后并粘贴。 - 全部复制并粘贴为值 - 排序
【问题讨论】:
此解决方案需要支持 XLOOKUP 和动态数组的 Excel 版本。
我会添加两列。一个用来统计记录,一个用来统计记录的行号,像这样。
E2 是=IF(A2="Facility ID:",MAX(E1:$E$1)+1,E1),F2 是=IF(E2=E1,F1+1,1)。除了最后一行之外,这些公式一直被拖到下方。这是手动输入的 6,因为该记录中缺少典型的第 4 行和第 5 行。
那么 sheet2 看起来像这样。
A2 计算 sheet1 中数据的总行数。 =COUNT(Sheet1!E:E)
第 3 行和第 4 行显示记录中每个字段的位置。
A6 开始一个从 1 到记录数的列表。 =SEQUENCE(MAX(OFFSET(Sheet1!E2,0,0,B1))) 这使用动态数组功能溢出到多个单元格中。
B6 中的公式也会溢出到多个单元格中。
=XLOOKUP($A6#&B$3,OFFSET(Sheet1!$E$2,0,0,$B$1)&OFFSET(Sheet1!$F$2,0,0,$B$1),OFFSET(Sheet1!$A$2,0,B$4,$B$1),"")
我在公式中使用了OFFSET,以便在输入其他数据时进行更新。
最后,将B6中的公式复制到其他列中。
【讨论】: