如何从Excel中提取单元格数据相似的文件并生成目标格式数据?
实现Excel数据分组格式化输出的三种方法
根据你的输入(按Item分组,合并对应Specification和Quantity为Spec (Qty)格式),以下是几种高效的实现方案:
方法一:Power Query(推荐,无公式/代码)
适合批量处理,操作可视化:
- 选中包含表头的数据区域,点击数据选项卡 → 从表格/区域(确认勾选「我的表格有标题」)。
- 在Power Query编辑器中,选中
Item列,点击转换 → 分组依据:- 分组依据:选择
Item - 新列名:输入
Details - 操作:选择「所有行」,点击确定。
- 分组依据:选择
- 点击
Details列右侧的双箭头,选择「提取值」:- 分隔符选「换行符」,高级选项中设置值格式为
[Specification] ([Quantity]),确认。
- 分隔符选「换行符」,高级选项中设置值格式为
- 点击主页 → 关闭并上载,结果会导出到新工作表。
方法二:公式法(Excel 365/2021适用)
无需额外工具,用函数快速生成:
- 提取唯一Item列表:在空白列(如E列)E2单元格输入
=UNIQUE(A:A),下拉填充。 - 生成对应明细:在F2单元格输入公式,下拉填充:
=TEXTJOIN(CHAR(10),TRUE,FILTER(B:B&" ("&C:C&")",A:A=E2,"")) - 选中F列,设置单元格格式为「自动换行」,明细会按分行显示。
方法三:VBA宏(适合重复批量处理)
按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码(记得替换工作表名):
Sub GenerateFormattedOutput() Dim wsInput As Worksheet, wsOutput As Worksheet Dim lastRow As Long, i As Long, j As Long Dim currentItem As String Set wsInput = ThisWorkbook.Worksheets("Sheet1") ' 替换为你的数据工作表名 Set wsOutput = ThisWorkbook.Worksheets.Add wsOutput.Name = "FormattedOutput" lastRow = wsInput.Cells(wsInput.Rows.Count, "A").End(xlUp).Row currentItem = "" j = 1 For i = 2 To lastRow If wsInput.Cells(i, "A").Value <> currentItem Then currentItem = wsInput.Cells(i, "A").Value j = j + 1 wsOutput.Cells(j, "A").Value = currentItem j = j + 1 End If wsOutput.Cells(j, "A").Value = wsInput.Cells(i, "B").Value & " (" & wsInput.Cells(i, "C").Value & ")" j = j + 1 Next i wsOutput.Columns("A").AutoFit End Sub
运行宏后会自动生成带目标格式的新工作表。
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

