You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2016如何根据Brands列动态生成对应品牌列并填充Models数据?

嘿,这个需求我太熟了——品牌数量不固定,手动建列根本不现实,给你两个靠谱的解决方案,按需挑就行:

方案1:用Power Query(无需编程,动态更新)

这是最推荐的方法,完全不用写代码,还能自动适配新增的品牌:

  • 第一步:导入数据到Power Query。选中你的数据区域(要包含「Brands」和「Models」表头),点击Excel顶部的「数据」选项卡 → 「从表格/区域」,确认勾选「我的表格有标题」,进入Power Query编辑器。
  • 第二步:把品牌转成列。在编辑器里选中「Brands」列,点击「转换」选项卡 → 「透视列」。弹出的窗口里,「值列」选择「Models」,高级选项里选「不要聚合」(因为每个型号唯一,不会有冲突),然后点确定。
  • 第三步:加载回Excel。点击「主页」选项卡 → 「关闭并上载」,选个位置加载结果就行。之后原数据新增品牌或型号时,只要右键点击生成的表格 → 「刷新」,它会自动更新列和数据,完全不用手动调整!
方案2:用VBA代码(一键自动化)

如果需要频繁批量处理,写个小脚本一键搞定更高效:

  • 第一步:打开VBA编辑器。按Alt + F11,右键左侧的工程窗口 → 插入 → 模块。
  • 第二步:粘贴以下代码(记得把代码里的Sheet1改成你的数据所在工作表名称):
Sub BrandToColumns()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim brandDict As Object
    Dim i As Long, j As Long
    
    ' 指定数据所在工作表,修改成你的表名
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set brandDict = CreateObject("Scripting.Dictionary")
    
    ' 获取数据最后一行
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 收集所有唯一品牌
    For i = 2 To lastRow
        If Not brandDict.Exists(ws.Cells(i, "A").Value) Then
            brandDict.Add ws.Cells(i, "A").Value, brandDict.Count + 2 ' 从第2列开始放置品牌列
        End If
    Next i
    
    ' 写入品牌表头
    j = 2
    For Each key In brandDict.Keys
        ws.Cells(1, j).Value = key
        j = j + 1
    Next key
    
    ' 填充对应型号数据
    For i = 2 To lastRow
        brandCol = brandDict(ws.Cells(i, "A").Value)
        ' 找到该品牌列的最后一行,写入型号
        lastCol = ws.Cells(ws.Rows.Count, brandCol).End(xlUp).Row + 1
        ws.Cells(lastCol, brandCol).Value = ws.Cells(i, "B").Value
    Next i
    
    MsgBox "品牌列已生成并填充完成!", vbInformation
End Sub
  • 第三步:运行代码。按F5或者给代码加个Excel按钮,点击就能自动生成品牌列并填充型号。后续数据更新时,重新运行代码即可。

小提示:运行VBA前最好备份数据,防止意外情况。

内容的提问来源于stack exchange,提问作者jarmanso7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:08:17