ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 629|回复: 6

[求助] 处理区域重复的保留一个,结果在原区域写入

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-9-29 14:38 | 显示全部楼层 |阅读模式
处理区域Range("A2:L15")重复的保留一个,重复的多少次写成批注,得处的结果在原区域Range("A2:L15")写入

上传.zip

8.04 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-29 14:44 | 显示全部楼层
第一列后面的行有公式是空值,怎么定位公式计算有结果的值,[a1].end(xldown)是行不通的,只能定位到最后一行带有公式的空值

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-29 16:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-9-29 16:47 | 显示全部楼层
没能很好理解楼主意思,猜一个。


Sub test()
        Dim d, rng
        Set d = CreateObject("Scripting.Dictionary") '定义字典对象
        For Each rng In Range("A2:L15")
                If rng <> "" Then d(rng.Value) = d(rng.Value) + 1
        Next rng
        Cells.ClearContents
        Cells.ClearComments
        Ik = d.keys: Im = d.items
        [a1].Resize(, d.Count) = Ik
        For i = 1 To d.Count
                With Cells(1, i)
                        .AddComment
                         .Comment.Visible = False
                         .Comment.Text "" & Im(i - 1) & ""
                End With
        Next i
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-9-29 16:53 | 显示全部楼层
Sub a()
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
Dim rng As Range
For Each rng In ActiveSheet.[a2:l15]           '数据源,按行提取
    If rng <> "" And Not d.exists(rng.Value) Then
        d(rng.Value) = 1
    Else
        d(rng.Value) = d(rng.Value) + 1
        rng.Value = ""
    End If
Next
For Each rng In ActiveSheet.[a2:l15]
    If rng <> "" Then
        rng.ClearComments       '清除批注
        rng.AddComment          '增加,批注
        rng.Comment.Text "重复次数:" & d(rng.Value)        '增加,批注内容
    End If
Next
Set d = Nothing
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-29 18:22 | 显示全部楼层
本帖最后由 1635967374 于 2019-9-29 18:25 编辑
xuemei0216 发表于 2019-9-29 16:53
Sub a()
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")

字典数组转置写入[a2:l15],这种方法好象不好弄对吧?也就是从新一个数挨着一个数(不用再加其它循环代码的方法)。

TA的精华主题

TA的得分主题

发表于 2019-9-29 18:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1635967374 发表于 2019-9-29 18:22
字典数组转置写入[a2:l15],这种方法好象不好弄对吧?也就是从新一个数挨着一个数(不用再加其它循环代码的 ...

Sub a()
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
Dim rng As Range
For Each rng In ActiveSheet.[a2:l15]           '数据源,按行提取
    If rng <> "" Then d(rng.Value) = d(rng.Value) + 1
Next
Dim i&, j&, k&
[a2:l15].ClearContents
[a2:l15].ClearComments       '清除批注
For i = 2 To 15
    For j = 1 To 7
        If k <= d.Count - 1 Then
            Cells(i, j) = d.keys()(k)
            Cells(i, j).AddComment          '增加,批注
            Cells(i, j).Comment.Text "重复次数:" & d(Cells(i, j).Value)        '增加,批注内容
            k = k + 1
        End If
    Next
Next
Set d = Nothing
End Sub

评分

1

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 06:31 , Processed in 0.043239 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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