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

寻求VBA或公式实现商品列表按门店重复并匹配门店名称

自动生成门店-商品对应列表解决方案

方法一:VBA宏实现

运行以下宏可自动生成所需的交叉列表:

Sub GenerateStoreItemList()
    Dim wsItems As Worksheet, wsStores As Worksheet, wsOutput As Worksheet
    Dim lastItemRow As Long, lastStoreRow As Long
    Dim i As Long, j As Long, outputRow As Long
    
    ' 指定数据所在工作表
    Set wsItems = ThisWorkbook.Worksheets("Items")
    Set wsStores = ThisWorkbook.Worksheets("Stores")
    
    ' 创建或复用输出工作表
    On Error Resume Next
    Set wsOutput = ThisWorkbook.Worksheets("StoreItemList")
    If Err.Number <> 0 Then
        Set wsOutput = ThisWorkbook.Worksheets.Add
        wsOutput.Name = "StoreItemList"
    End If
    On Error GoTo 0
    
    ' 获取商品和门店的最后一行(自动适配数据量)
    lastItemRow = wsItems.Cells(wsItems.Rows.Count, "A").End(xlUp).Row
    lastStoreRow = wsStores.Cells(wsStores.Rows.Count, "A").End(xlUp).Row
    
    outputRow = 1
    ' 遍历每个门店,输出对应所有商品
    For i = 1 To lastStoreRow
        For j = 1 To lastItemRow
            wsOutput.Cells(outputRow, "A").Value = wsStores.Cells(i, "A").Value
            wsOutput.Cells(outputRow, "B").Value = wsItems.Cells(j, "A").Value
            outputRow = outputRow + 1
        Next j
    Next i
    
    ' 自动调整列宽
    wsOutput.Columns("A:B").AutoFit
End Sub

使用步骤:

  • 打开目标Excel文件,按Alt + F11打开VBA编辑器
  • 右键左侧工作簿名称 → 插入 → 模块
  • 粘贴上述代码,按F5运行宏即可

方法二:Excel公式实现

新建一张名为「Output」的工作表,在A1和B1单元格分别输入以下公式,选中两个单元格向下拖拽填充至出现空白:

  • A列(门店名称):
=INDEX(Stores!$A:$A,INT((ROW()-1)/COUNTA(Items!$A:$A))+1)
  • B列(商品编号):
=INDEX(Items!$A:$A,MOD(ROW()-1,COUNTA(Items!$A:$A))+1)

公式说明:

  • COUNTA(Items!$A:$A)自动统计商品总数,无需手动修改数字
  • 利用行号的整除和取余运算,循环匹配每个门店与对应商品

内容的提问来源于stack exchange,提问作者mcnabb.ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:46:06