Excel:根据单一标准输出更多(计算)行

Excel:根据单一标准输出更多(计算)行

我想将满足特定条件的一行信息分成几行。

在所附的示例中,我想拆分“记录”列中数字为 2 或更多的行,并在每个新行上保留数字 1;但“金额”也应分布在新行中。

我在以下链接中附加了一个包含信息和预期结果的文件: https://www.dropbox.com/s/nsbah933u0p1yvi/CHALLENGEa.xlsx?dl=0并粘贴如下:

例子

答案1

这是一个仅使用基本 Excel 函数的解决方案。假设链接中所示的源表从 A 列开始,第一行数据是第 2 行。首先,添加一个从 H2 开始的辅助列。此列计算新表中每个新名称的起始相对行。

在单元格 H2 中输入1。H3 中的公式为:

    =IF(ISBLANK(A3),"",SUM(C$2:C2)+1)

将其复制到所有源数据行以及您想要预填充的其他行的列中。不需要的部分将保留为空白。

您的输出表从第 I 列开始,第 2 行是第一个数据。由于您的示例有五行数据,因此我将以此为基础制定解决方案公式。只需根据需要更改参考范围即可。I2(您的数字列)中的公式将是:

    =IF((ROW()-1)>SUM(C$2:C$6),"",MATCH(ROW()-1,H$2:H$6,1))

您可以将其复制到任意大范围内的列中,以预先填充您最终可能会使用的单元格。此条目和表格中的所有其他条目在需要之前都将保持空白。

日期列为J。J2中的公式为:

    =IF(I2="","",VLOOKUP(I2,$A$2:$F$6,2,))

Name 和 ID 列类似,只是在不同的列中使用 VLOOKUP,因此 M2 和 N2 中的公式是:

    =IF(I2="","",VLOOKUP(I2,$A$2:$F$6,5,))   (cell M2)
    =IF(I2="","",VLOOKUP(I2,$A$2:$F$6,6,))   (cell N2)

您可以复制 J2 公式并编辑 VLOOKUP 列(最后一个参数)。

在输出表中,记录列始终为1,因此单元格 K2 为:

    =IF(I2="","",1)

剩下的一列是金额,它使用两个 VLOOKUP 来输入除法的分子和分母。单元格 L2 将是:

    =IF(I2="","",VLOOKUP(I2,$A$2:$F$6,4,)/VLOOKUP(I2,$A$2:$F$6,3,))

如果日期列显示为数字,只需将单元格格式更改为所需的日期格式。现在您可以像对 I 列所做的那样复制所有这些单元格。

这将为您提供示例中显示的输出。

答案2

我会为此使用 Power Query 插件。它有一个 List.Generate 函数可以实现你想要的功能。

我已经使用您的数据构建了一个解决方案,您可以查看或下载它:“Power Query 演示 - 从单元格值生成多行.xlsx”在我的 One Drive 中:

https://onedrive.live.com/redir?resid=4FA287BBC10EC562%21398

其中大部分是使用点击式 Power Query UI 构建的。List.Generate 函数的文档如下:

http://office.microsoft.com/en-gb/excel-help/list-generate-HA104111647.aspx

网络上没有很多实际的例子,而且我无法弄清楚如何将记录值传递给它,所以我只是生成 10 行,然后在后面的步骤中进行过滤。

相关内容