EXCEL按商品料号整理拼接库位 方法一

103 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
商品、仓库、财务、IT
你将会学到
Excel函数,VBA宏
课程简介

分享:


EXCEL多方法按按商品/料号整理拼接库位号分享


场景:

仓库商品按库位存放,查询商品都存放到了哪些库位(扩展需求:查看库位有哪些商品)。


需求:

根据A列料号一样的料号对应的库位号B列,把B列的库位号自动放到E列上去,且中间空一格

备注:

A列的料号是一样的会放在一起的;且A列料号重复出现的次数不会超过24次;

参考见手工填的范例。


///////////////////////////////////////////////


方法一:辅助列+VLOOKUP

        

思维逻辑:简化拆解与集成拼装

=IFERROR(VLOOKUP($A2&1,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&2,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&3,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&4,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&5,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&6,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&7,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&8,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&9,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&10,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&11,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&12,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&13,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&14,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&15,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&16,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&17,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&18,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&19,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&20,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&21,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&22,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&23,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&24,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&25,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&26,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&27,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&28,$B:$C,2,0)&" ","")&IFERROR(VLOOKUP($A2&29,$B:$C,2,0)&" ","")


方法二:OFFSET+PHONETIC


思维逻辑:查找引用与数组拼接

=PHONETIC(OFFSET($E$1,MATCH(A2,A:A,0)-1,0,COUNTIF(A:A,A2),1))


方法三:VBA宏


思维逻辑:输入→处理→输出

///////////////////VBA宏模板///////////////////////

Sub qigemingzi()       '起个名字

'--------------------------------

Sheets("表名").Select  '选中一个表

Dim tms

tms = Timer                                      '获取当前时间

Application.ScreenUpdating = False               '关闭屏幕更新


kshs = 2                                         '定义开始行数

jshs = Sheets("表名").[A65536].End(xlUp).Row     '获取数据行数

jsl = Split(Sheets("表名").[IV3].End(xlToLeft).Address, "$")(1) '获取结束列标字母


ReDim shuchu(1 To jshs, 1 To jsls)           '定义输出数组

'相关数据写入数组

'--------------------------------

Dim shujuarr                                 '定义数据数组

shujuarr = Range("a" & kshs & ":a" & jshs)   '列数据装入数组


'字典相关操作样例

'--------------------------------

Dim dic As Object                              '定义字典

Set dic = CreateObject("Scripting.Dictionary") '引用字典


For i = 1 To jshs - 1

   Key = shujuarr(i, 1)

  Item = shujuarr(i, 3)

  If dic.exists(Key) Then                     '判断字典是否存在KEY键

  dic.Item(Key) = dic.Item(Key) & "," & Item  '存在则变更KEY对应的值

  Else

  dic.Add Key, Item                           '不存在则添加键值

  End If

Next


For i = 1 To jshs - 1

vkey = shujuarr(i, 2)

shuchu(i) = dic.Item(vkey)                    '查找Vkey返回值。

Next


'输出数组结果回写单元格

'--------------------------------

Range("DC" & kshs & ":" & jsl & jshs) = shuchu           '输出数据回写单元格,如需转置则Application.Transpose(shuchu)

Application.ScreenUpdating = True

MsgBox "更新完成,用时" & Format(Timer - tms, "0.0000s")  '计算程序用时

End Sub

展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
讨论区空空如也,你来讲两句~
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交