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

基于Item列表选择同步更新两列单元格:物品与对应条码

解决方案:同步写入物品名称与对应条码

一、VBA代码修改方案

直接在原有代码基础上新增条码收集逻辑,实现同步写入同行K列:

Private Sub OK_Click()
    Dim MyVar As String, MyBCode As String
    Dim x As Integer
    
    MyVar = ""
    MyBCode = ""
    
    For x = 0 To Me.Item.ListCount - 1
        If Me.Item.Selected(x) Then
            ' 拼接选中的物品名称
            If MyVar = "" Then
                MyVar = Me.Item.List(x, 0)
            Else
                MyVar = MyVar & ", " & Me.Item.List(x, 0)
            End If
            ' 同步拼接对应条码(假设控件列表第二列为条码,索引为1)
            If MyBCode = "" Then
                MyBCode = Me.Item.List(x, 1)
            Else
                MyBCode = MyBCode & ", " & Me.Item.List(x, 1)
            End If
        End If
    Next x
    
    Me.Hide
    ActiveCell.Value = MyVar
    ' 写入当前行K列条码字符串
    Cells(ActiveCell.Row, "K").Value = MyBCode
End Sub

说明:

  • 新增MyBCode变量存储条码拼接结果
  • 循环时同步收集选中项的条码,请确认Item控件列表的第二列对应隐藏表的BCode列(若索引不符,自行调整List(x,1)中的数字)
  • 通过Cells(ActiveCell.Row, "K")精准定位活动单元格所在行的K列,不受活动单元格列位置影响

二、公式解决方案(适用于已写入物品名称的场景)

如果物品名称已写入单元格(比如C2),可在同行K列用公式自动生成条码字符串:

适用于Excel 365/2021(支持TEXTSPLIT)

=TEXTJOIN(", ", TRUE, XLOOKUP(TEXTSPLIT(C2, ", "), 隐藏表名称!A:A, 隐藏表名称!B:B, ""))

适用于旧版Excel(无TEXTSPLIT)

用FILTERXML解析逗号分隔的物品名称,再匹配条码:

=TEXTJOIN(", ", TRUE, XLOOKUP(FILTERXML("<t><s>"&SUBSTITUTE(C2,", ","</s><s>")&"</s></t>","//s"), 隐藏表名称!A:A, 隐藏表名称!B:B, ""))

说明:

  • 将公式中的隐藏表名称替换为实际存放Items和BCode的工作表名
  • TEXTJOIN负责把匹配到的条码用, 拼接,XLOOKUP根据物品名称查找对应条码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:24:12