郭靖刚把报表交给黄蓉,就被劈头盖脸一顿骂——'旗舰机型写成旗舰鸡型,你是要开养鸡场吗?!'
更惨的是小龙女,商务平板单价少打个9,2999变2.99……手工输入一时爽,核对火葬场,
今天教你用三级联动下拉框 OFFSET函数,彻底告别错别字和混乱分类!"
看一下动态效果图:
一、一级菜单制作
Step1:创建超级表格
1、选中产品库里的A2:D16→按Ctrl T变身超级表✅ 重点:增加产品名时,Excel制作的下拉菜单里会自动增加的产品名
Step2:设置数据牢笼
1、选中要设置的单元格或单元格区域。
2、【数据】→【有效性】→允许选"序列"
3、来源输入==产品库!$A$2:$A$16,一级菜单搞定了!
血泪警告:名称里不能有空格!
二、二级菜单:OFFSET函数来搭桥
Step1:建立暗号系统
准备公式:
=OFFSET(产品库!$A$1, MATCH($A2,产品库!$A$2:$A$16,0), 1, COUNTIF(产品库!$A$2:$A$16,$A2), 1)
公式整体作用:根据当前表格选中的一级分类(比如A2单元格的"服饰鞋包"),动态抓取数据源表中对应的所有二级分类(比如女装、男装)
OFFSET函数参数详解
=OFFSET(起点, 下移行数, 右移列数, [高度], [宽度])
- 起点:定位的基准单元格(建议用$A$1锁死)
- 下移行数:用MATCH函数找到一级分类的起始行
- 高度:用COUNTIF计算该分类有多少个小弟
Step2:动态关联咒语
- 在二级菜单单元格设置数据验证
- 序列来源输入=上面的公式
二级联动成功了,真正的BOSS来了!三级菜单像段誉的六脉神剑——时灵时不灵!"
三、三级菜单:OFFSET函数动态狙击
1、三级菜单的公式很简单,只要把公式中的字母“A”全改成“B",就可以了。
=OFFSET(产品库!$B$1,MATCH($B2,产品库!$B$2:$B$16,0),1,COUNTIF(产品库!$B$2:$B$16,$B2),1)
2、同样在三级菜单的单元格,设置数据有效里,序列来源输入=上面的公式。
四、增加产品时,下拉菜单自动动态更新。
在产品库里增加一行产品名称:
录入单自动更新下拉菜单。
五、单价与金额联动
1、在录入单E2单格里输入公式:
=XLOOKUP(C2,产品库!$C$2:$C$16,产品库!$D$2:$D$16,"")
XLOOKUP(查找值,查找值所在区域,返回值的区域,找不到显示为空值)
然后公式向下拖动进行填充。
2、在录入单F2单格里输入公式:
=IF(D2<>"",D2*E2,"")
六、数据保存到明细表中
1、设置代码:
在工具-VB编辑器-右击-thisworkbook-插入模块
在横块中输入这代码:
Sub 保存到明细表()
Dim srcSh As Worksheet, destSh As Worksheet
Dim lastRow As Long, destRow As Long
' 设置工作表对象(更安全的引用方式)
Set srcSh = ThisWorkbook.Sheets("录入单")
Set destSh = ThisWorkbook.Sheets("明细表")
' 获取源数据最后行(从第1列查找)
lastRow = srcSh.Cells(srcSh.Rows.Count, 1).End(xlUp).Row
' 获取目标表最后空行(从第1列查找)
destRow = destSh.Cells(destSh.Rows.Count, 1).End(xlUp).Row 1
' 复制粘贴为数值(避免公式和格式)
srcSh.Range("A2:F" & lastRow).Copy
destSh.Range("A" & destRow).PasteSpecial Paste:=xlPasteValues
' 清除剪贴板(避免虚线框残留)
Application.CutCopyMode = False
MsgBox "已成功保存 " & lastRow & " 行数据到明细表!", vbInformation
srcSh.Range("A2:D" & lastRow).ClearContents
End Sub
2、制作与代码联动的按钮:
(1)、插入-形状-圆角矩形-在适当位置画一个形状:
(2)右击形状-编辑文字-”保存到明细表:
(3)形状跟代码进行联动:
右击形状-指定宏-选刚输入代码的过程名:保存到明细表。
按确定后,你只需点击保存到明细表就能实现自动保存了。
记得,要把工作簿保存为宏启动的工作簿哦。
总结:
三级联动下拉框+自动保存,让你彻底告别错别字和混乱分类,录入速度不知翻了多少倍了。
函数党和VBA党又打起来了!有人说OFFSET函数过时了,要用XLOOKUP?你站哪边?评论区Battle!
评论 (0)