Microsoft VBA Excel 去重小工具

【Excel VBA 从入门到出门】一、Excel VBA 是个啥? VBA代表Visual Basic for A applications。它是一种编程语言,用于自动执行 Microsoft Office 产品(包括 Excel、Word 和 Outlook)中的任务。使用 VBA Excel,您可以编写代码来自动执行任务、创建自定义函数,甚至在 Office 程序之间移动数据。 阅读详情

问题简述

在本工作表中,A1:B3单元格样式如下,通过名称管理器B列的单元格被命名为"LinkFile"、“SheetName”、“InputArea”,请实现以下功能:读取Excel文件中的数据,去除重复的数据,并记录每个数据项最后一次出现的位置,最后将结果输出到当前工作表中。

AB
1Link File:
2Sheet Name:
3Input Area:

代码描述

第一步:
读取:输入一个xls表格文件的地址到"LinkFile"、该文件内工作表名称到"SheetName"和需要读取数据的范围(例如A2:A102)到"InputArea",根据指定范围在该文件内指定工作表中读取所有数据;
第二步:
去重和获得索引:上一步获取的数据中存在重复,因此只需要保留唯一值,根据唯一值获得该值最后一次出现在读取数据范围的行列位置信息;
第三步:
输出:在本工作表中,在"InputArea"单元格下两行开始输出从上一步得到的单元格数据和对应的行列信息,也就是从A5开始输入单元格数据,B5开始输入对应的行列信息。

Sub ProcessData()
    Dim srcWb As Workbook
    Dim ws As Worksheet, srcWs As Worksheet
    Dim linkFile As String, sheetName As String, inputArea As String
    Dim rng As Range, cell As Range
    Dim dict As Object
    Dim outputRow As Long
    
    ' 创建字典来存储唯一值和对应的最后位置
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 获取当前活动的工作表
    Set ws = ThisWorkbook.ActiveSheet
    
    ' 读取工作表中的相关数据
    linkFile = ws.Range("LinkFile").Value
    sheetName = ws.Range("SheetName").Value
    inputArea = ws.Range("InputArea").Value
    
    ' 打开源数据文件
    Set srcWb = Workbooks.Open(linkFile)
    Set srcWs = srcWb.Sheets(sheetName)
    
    ' 获取指定范围
    Set rng = srcWs.Range(inputArea)
    
    ' 遍历范围,收集数据
    For Each cell In rng
        If Not dict.Exists(cell.Value) Then
            dict.Add cell.Value, cell.Address(False, False)
        Else
            dict(cell.Value) = cell.Address(False, False)  ' 更新为最后出现的位置
        End If
    Next cell
    
    ' 关闭源数据文件
    srcWb.Close False
    
    ' 输出结果
    outputRow = ws.Range("InputArea").Row + 2
    For Each key In dict.Keys
        ws.Cells(outputRow, 1).Value = key
        ws.Cells(outputRow, 2).Value = dict(key)
        outputRow = outputRow + 1
    Next
    
    MsgBox "数据处理完毕!"
End Sub

English:

Sub ProcessData()
    Dim srcWb As Workbook
    Dim ws As Worksheet, srcWs As Worksheet
    Dim linkFile As String, sheetName As String, inputArea As String
    Dim rng As Range, cell As Range
    Dim dict As Object
    Dim outputRow As Long
    
    ' Create a dictionary to store unique values and corresponding last positions
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' Get the currently active worksheet
    Set ws = ThisWorkbook.ActiveSheet
    
    ' Read relevant data from the worksheet
    linkFile = ws.Range("LinkFile").Value
    sheetName = ws.Range("SheetName").Value
    inputArea = ws.Range("InputArea").Value
    
    ' Open the source data file
    Set srcWb = Workbooks.Open(linkFile)
    Set srcWs = srcWb.Sheets(sheetName)
    
    ' Get the specified range
    Set rng = srcWs.Range(inputArea)
    
    ' Iterate over the range, collecting data
    For Each cell In rng
        If Not dict.Exists(cell.Value) Then
            dict.Add cell.Value, cell.Address(False, False)
        Else
            dict(cell.Value) = cell.Address(False, False)  ' Update to the last position of occurrence
        End If
    Next cell
    
    ' Close the source data file
    srcWb.Close False
    
    ' Output the results
    outputRow = ws.Range("InputArea").Row + 2
    For Each key In dict.Keys
        ws.Cells(outputRow, 1).Value = key
        ws.Cells(outputRow, 2).Value = dict(key)
        outputRow = outputRow + 1
    Next
    
    MsgBox "Data processed successfully!"
End Sub

总结

【vba】——整合excel数据 vba是在最初组织旧版评教系统时就接触过的,但一直没研究过,也没仔细看过。只知道它可以整理数据。 了解:     Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种 阅读详情

相关推荐

Excel VBA初级系列培训--课时1

Excel VBA初级系列培训 ...

Jimmy Zeng 1291

Microsoft VBA Excel 单元格 重复元素 去重

啦啦啦

RandPython的博客 1641

FPGA DMA IP核使用指南

数据传输:支持从源地址到目标地址的数据传输。中断管理:提供中断信号,便于CPU处理传输完成事件。传输控制:支持传输大小、方向和暂停/恢复控制。

weixin_66634995的博客 2428

Excel 数据清洗与预处理(用 pandas):去重、填充缺失值、格式标准化、列拆分/合并等

数据清洗不是“脏活”,而是提升数据价值的关键一步。10秒完成原本1小时的手工操作避免人为错误,保证数据一致性为后续分析、可视化、建模打下坚实基础记住:干净的数据,才是好数据!

张三的博客 790

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

【open judge】【程设】魔兽世界三开战!

#程设 魔兽世界三---开战!--------原以为会很容易ac,没想到写了好久,看来自己的水平还是亟待提高啊!有几个比较有趣的点:1. typeid(#include<typeinfo>)还是比较好用的,特别是本题当战士为wolf,iceman, dragon, ninja时有特殊技能,那么用typeid判断一下就很方便了。2. 对于这种输出很复杂的问题,往往通过使用文件的输入输出再...

weixin_40841416的博客 6073

亲测高效!这款 Excel 表格拆分神器

Excel 表格拆分神器

2401_84160419的博客 2396

OpenCompass实战:从零部署大模型评测平台,量化模型能力选型

在大模型技术选型与评估中,客观、可量化的评测体系是工程实践的关键。其核心原理在于通过标准化的数据集、统一的评测方法与自动化流程,将主观的模型体验转化为可比较的指标数据。这种评测框架的技术价值在于解决了模型能力评估的模糊性问题,为开发者提供了模型选型、效果对比与迭代优化的科学依据。典型的应用场景包括对比不同开源模型在代码生成、逻辑推理等特定任务上的性能,或是评估微调后模型在业务数据集上的提升效果。OpenCompass作为开源的大模型全能力评测平台,正是这一理念的工程化实现。它通过模块化的四层流水线架构和配置

weixin_28725037的博客 630

excel去重复

http://club.excelhome.net/thread-888978-2-1.html 以下是楼主的方法1: Sub 矩形1_Click()     i = Range("A65536").End(xlUp).Row     For s = 1 To i         For ss = i To s + 1 Step -1

threshold1980的专栏 825

T型三电平关管顺序要求

摘要: T型三电平拓扑中,IGBT关断必须遵循“外管先关、内管后关”的时序,否则易导致器件损坏。正常导通时,外管与内管共同分担电压;正确关断时,外管先关使电流经内管续流至中点,避免电压过冲;若内管先关,电流路径被强制切断,杂散电感引发高压尖峰击穿器件。这一时序本质是为电流提供低应力续流路径,需通过硬件或软件严格保障。

yun0804的博客 2384

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本)

本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。

f9g0h的博客 493

Excel VBA VBA去重复的几种方法

VBA去重复典型有两种方法: ① 整数数值型数据,可以直接使用数组下标去重复 ② 通用方法:字典去重复 Sub RecSortTest() arr = Array(5, 4, 2, 1, 5, 8, 7, 2, 7, 9, 3, 6, "22", "23", "221", 22, 23, 221, "a", "z", "c") '测试数组 ' arr = WorksheetFunct

ChristopherChen的博客 2万+

Modbus RTU/TCP协议栈手写实现:主从站设计、功能码、CRC、异常响应

本文从协议栈架构、帧结构、功能码、CRC校验、异常响应、主从站设计等多个维度,完整阐述了Modbus RTU/TCP协议栈的手写实现方案。帧间隔机制是RTU的核心,T3.5超时检测决定了帧边界识别CRC16查表法以512字节ROM换取8倍性能提升,适合嵌入式功能码路由表实现可扩展的代码架构,便于新增功能异常响应机制保障协议健壮性,每个错误都有明确反馈Modbus TCP在RTU基础上增加MBAP头,实现以太网扩展多核RTOS环境下的并发访问与线程安全RS-485总线的电气隔离与浪涌保护。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

EXCEL VBA 入门与实用例子

VBA这个以前用过,放下很久了,最近因需要用Excel处理数据,用到了它,使用了其它一些方式,对比一下,感到VBA还是有些长处的。故将以前的学习笔记,重新整理了一下,发表到这里,供有需要的人借鉴。...............

cnds123的专栏 7万+

一文弄懂Word2Vec之skip-gram(含详细代码)

目录 前言 一、什么是Skip-gram算法 二、目标是什么 三、定义表示法 3.1 one-hot向量 3.2 词向量(word vector) 3.3 单词矩阵 3.4 单词相似度 3.5 softmax函数 3.6算法过程 3.7 求softmax 四、skipgram代码实现 4.1 如何把词转换为向量 4.2 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 4.3 使用Pytorch实现Skip-gram .

Python,数据分析,机器学习,深度学习 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Excel VBA学习

首先,第一个问题,什么是 VBA?Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。以上是 VBA 的百科定义,说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。

qq_45303968的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

excel去重怎么操作_这些年,为了在 Excel 中给序列去重,不知道坑死了多少人

老铁们应该已经非常熟悉罗叔给出的这个公式:PowerBI = ( Excel + PPT )²= Excel² + 2·Excel·PPT + PPT²请大家熟记这个公式,并记住来自罗叔的正确解释:第一,Excel 很重要。第二,PPT 很重要。第三,PowerBI 更重要。而我们为了在数据时代领先一步,你需要的不仅仅是有局限的学习 Excel 或者 PPT,而是三者。任何一个只强调一者...

weixin_39929259的博客 4563

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Excel VBA入门教程

简单介绍vba是什么,和编写第一个vba程序

m0_61961937的博客 6万+

VBA读取其他Excel内容

VBA读取其他Excel内容AccessDataBaseEngine安装Excel内容读取 采用Microsoft于2020/8/11新出的AccessDataBaseEngine(Microsoft Access 2016 数据库引擎可再发行程序包)在VBA中读取Excel内容。 AccessDataBaseEngine安装 如何选择安装32位或64位AccessDataBaseEngine?打开Excel,点击文件 > 账户 > 关于Excel 查看。下载AccessDataBaseEngi

weixin_47342231的博客 7358

Excel VBA简单语法

摘要: 该文为想要学习VBA编程的会计和编程同学有一定的个性化定制Excel操作提供参考 1. VBA编程是什么 VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.90 年代早期,微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),而这种语言使EXCEL的用宏...

Master_Shifu_的博客 1万+

Microsoft VBA Excel 去重+自动化配对信息

啦啦啦

RandPython的博客 968

Microsoft Excel(微软表格软件)

是为使用和操作系统的电脑编写的一款软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsoft Office的组件发布了5.0版之后,Excel就开始成为所适用操作平台上的电子制表软件的霸主。Microsoft Excel 2016,執行於(2020年2月11日​(2020-02-11)(2018年7月15日​(2018-07-15))(2017年5月15日​(2017-05-15))

weixin_40191861的博客 999

Microsoft VBA Excel 一键写入和一键清除

快乐打工日记【香港】

RandPython的博客 3918

excel自带有vba手册吗_Excel VBA 过时了吗?

《神奇的VBA》插件最近有焦虑的小伙伴问我VBA会不会过时?这个问题源自于他从网上看到很多自媒体推广文章,推广Python作为编程语言对Excel进行二次开发。他担心自己的精力付出到头来只是个无用的投资!其实这种担心完全没有必要。每个语言都有自己的特色,都有自己的优点和缺点,都有自己擅长的领域。不过对Excel进行调用和二次开发, Python只是其中之一,C#,http://VB.Net也可以。...

weixin_30016961的博客 1028

微软 python替代vba_重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言

关键时刻,第一时间送达!如果微软的 Excel 中支持了人生苦短的 Python,你还会喜欢那个直接且易上手的 VBA 编程吗?近日,据国外媒体 BLEEPINGCOMPUTER 报道,微软正考虑添加 Python 为官方的一种 Excel 脚本语言,如果获得批准,Excel 用户将能够像目前使用 VBA 脚本一样,使用 Python 脚本与 Excel 文档、数据以及一些 Excel 核心函数进...

weixin_39636245的博客 3774

先学vba还是python-以Excel处理为目的学习python还是VBA?

------补充2020/07/15-21:19:(1)我认同python在作为胶水语言和库很多这两点上的优势,不过正如文中所述,99.99%用excel的人是真的用不到那些库,也没时间学习(需要有编程基础/思维,英语不错,愿意抽出时间钻研等)。很多时候作为有编程专业背景的人会理所当然地觉得这些都很简单,过分高估大众对编程的学习能力,因为他们已经淡忘了自己是如何花费数年努力学习才走到今天的了。(2...

weixin_37988176的博客 3759
上一篇: Microsoft VBA Excel 单元格 重复元素 去重
下一篇: Microsoft VBA Excel 去重+自动化配对信息
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值