使用 Excel 2013,我正在努力编写一个公式,该公式允许我根据 F 列中的扣除代码使用每个堆叠数据集的第一行/唯一标识符上的各种条件转置 E 列中堆叠的金额。我认为至少有两种可能的解决方案,但我还没有破解。
根据 AD 列中的唯一标识符编写公式(或 VBA 脚本?到目前为止,我只涉猎过公式),按字母顺序或颜色对堆叠行项目的扣除代码进行排序,以一致地组织扣除代码列,然后从金额列中提取金额并将金额转置为与唯一标识符位于同一行的正确扣除代码 GK 列。 (我尝试在主行项目行的扣除代码列中添加一个 A,但也无法使其工作。)
公式(或 VBA)根据每个堆叠行项目/唯一标识符集的行数自动将数据排序为 4、5 或 6 行组,并按字母顺序排列扣除代码。然后应用索引或偏移公式或使用转置函数将数据放入与唯一标识符位于同一行的正确扣除代码 GK 列中。
我喜欢学习 Excel 的新方法,因为它可以让我的生活更轻松,但我仍在努力执行复杂的数据处理。这是我想到并试图弄清楚的唯一两个选项,但最终无法解决我的问题。
我不在乎是否需要几个步骤来解决我的问题,即将基于扣除代码的垂直堆叠数据转换为正确的列和与唯一标识符相同的行,如第 2、8、12 和 17 行所示。
欢迎任何帮助或解决方案,这样我就不必手动将 4、5 或 6 行分组并按字母顺序排列,然后将数据转置到正确的列中。
谢谢你!!
文件链接:https://drive.google.com/file/d/1jNpuRWsFqPRTo9J3-g4X1Qss5nFPRdET/view?usp=sharing
答案1
您说得对,移动数据的方法有很多。公式可以满足您的需要。数据透视表是将值移动到同一行的另一种方法。
在尝试使用数据透视表之前,请先填充 B、C 和 D 列中的空单元格。这里有一个宏,用于使用上方单元格中的值填充空单元格。
Sub FillEmptyCellsWithTheValueAbove()
'Select a range of cells, then run this macro to fill empty cells
'with the value in the cell above.
Dim rngCell As Range
For Each rngCell In Selection.Cells
If rngCell.Value = "" Then
rngCell.Value = rngCell.Offset(-1, 0).Value
End If
Next rngCell
End Sub
在 E 列中,用“AA”或按字母顺序位于“EX”之前的任何值填充空单元格。
当您定义数据透视表时,行将是名称、日期、产品类型和小数。列将是扣除代码。值将是金额总和。参见第一张图片。
在“设计”功能区上,调整数据透视表的布局。您可能需要以下选项:
- 小计 > “不显示小计”
- 总计 > “行和列关闭”
- 报告布局 > “以表格形式显示”
- 报告布局 > “重复所有项目标签”
有关这些选项的结果,请参见第二张图片。要进一步改进数据透视表,请将列格式化为日期和数字。