Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7031|回复: 10

[已解决]怎么将选中的项目名称提取到特定的单元格

[复制链接]
发表于 2021-3-21 16:32 | 显示全部楼层 |阅读模式
想将工资表中选中的项目名称提取到分类表的d3、e3中,没有成功,请高手帮帮忙看看怎么才能达到效果呢

提取字段 -间隔0321.zip (295.27 KB, 下载次数: 5)
发表于 2021-3-21 22:38 | 显示全部楼层    本楼为最佳答案   
请试验

提取字段 -间隔0321.rar

400.86 KB, 下载次数: 8

评分

参与人数 1学分 +1 收起 理由
hhxq001 + 1 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-3-22 08:46 | 显示全部楼层

太太强大了,请教这句是什么意思

arr = Split(xzxm.Address, ",")



回复

使用道具 举报

发表于 2021-3-22 12:04 | 显示全部楼层
hhxq001 发表于 2021-3-22 08:46
太太强大了,请教这句是什么意思

arr = Split(xzxm.Address, ",")

xzxm.Address就是xzxm的单元格地址。 Split是vba的拆分函数,利用 Split把xzxm的单元格地址按英文的逗号拆分。拆分结果写入数组arr
回复

使用道具 举报

 楼主| 发表于 2021-3-22 21:45 | 显示全部楼层
高 发表于 2021-3-22 12:04
xzxm.Address就是xzxm的单元格地址。 Split是vba的拆分函数,利用 Split把xzxm的单元格地址按英文的逗号 ...

很有意思的一段代码。按住ctrl+鼠标单击选择是很好的(比如$F$3,$G$3),但如果直接鼠标拖选中($E$3:$F$3),就无效了,又改怎么修改呢?就是不管怎么选中,都可以。
回复

使用道具 举报

 楼主| 发表于 2021-3-23 14:59 | 显示全部楼层
高 发表于 2021-3-22 12:04
xzxm.Address就是xzxm的单元格地址。 Split是vba的拆分函数,利用 Split把xzxm的单元格地址按英文的逗号 ...

麻烦再给看看5楼的问题怎么解决哦
回复

使用道具 举报

发表于 2021-3-23 17:42 | 显示全部楼层
本帖最后由 高 于 2021-3-23 17:54 编辑

arr = Split(xzxm.Address, ",")是按英文的逗号拆分的。如果直接鼠标拖选中($E$3:$F$3)再运行此代码,结果还是$E$3:$F$3。如果你要这么选,就要改一下代码,加判断了。arr = Split(xzxm.Address, ",")换成:

If InStr(xzxm.Address, ",") Thenarr = Split(xzxm.Address, ",")
Else
arr= Split(xzxm.Address, ":")
End If

回复

使用道具 举报

发表于 2021-3-23 21:49 | 显示全部楼层
本帖最后由 242507720 于 2021-3-23 22:00 编辑

Sub 选择表格的时候注意选择的先后顺序()
  Dim rng As Range, rg As Range, n%
  Sheet9.Range("d3", "f3").ClearContents
    On Error Resume Next
    Set rng = Application.InputBox(Prompt:="请选择单元格", Type:=8)
    If rng Is Nothing Then Exit Sub
    For Each rg In rng
        n = n + 1
        If n > 2 Then
            Exit For
        Else
            If n = 1 Then Sheet9.[d3] = Cells(3, rg.Column).Value
            If n = 2 Then Sheet9.[f3] = Cells(3, rg.Column).Value
        End If
    Next
    Sheet9.Select
End Sub复制到模块中直接用就好了。

评分

参与人数 1学分 +2 收起 理由
hhxq001 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-3-23 22:23 | 显示全部楼层
在“高”坛友的帮助下,终于可以完美提取项目字段使用了,再次感谢。
Sub 选择项目()
Dim xzxm As Range, cc%, dd%
  On Error Resume Next
Set xzxm = Application.InputBox("请点选补助项目,可以按住Ctrl+鼠标左键选2项", "提示:最多选择2项,多选无效", , , , , , 8)  'Default:="$E$3",
  If xzxm Is Nothing Then Exit Sub
If xzxm.Count >= 2 Then '如果项目的个数大于,最多2个有效

If InStr(xzxm.Address, ",") Then arr = Split(xzxm.Address, ",")
If InStr(xzxm.Address, ":") Then arr = Split(xzxm.Address, ":")

cc = 1
dd = 2

With Sheet9
.[d3] = Sheet7.Range(arr(cc - 1)).Value
.[f3] = Sheet7.Range(arr(dd - 1)).Value
End With

Else

With Sheet9
.[d3] = Sheet7.Cells(3, xzxm.Column) '如果只选择了一个项目,则d3赋值,f3保留空白
.[f3] = ""
End With

End If
Sheet9.Select
End Sub
回复

使用道具 举报

 楼主| 发表于 2021-3-23 22:33 | 显示全部楼层
242507720 发表于 2021-3-23 21:49
Sub 选择表格的时候注意选择的先后顺序()
  Dim rng As Range, rg As Range, n%
  Sheet9.Range("d3", "f ...

厉害,又一种方法,能解释一下过程吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-17 01:52 , Processed in 0.365737 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表