当前位置: 首页 > news >正文

数值与字典解决方案第二十六讲:FILTER函数在去除数据的方法

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数值与字典解决方案第二十六讲:FILTER函数在某个数据列中去除数据的方法

【分享成果,随喜正能量】131 真正的修佛之人。首先,得明白自己的来处和归宿,懂得敬畏自己的生命和他人的生命,尽其所能释放善意。学会悲天悯人,渡人的同时渡己,始终走在止于至善的路上。真正的慈悲为怀,并不一定只是钱财的救济,有的时候,一个善举,也是一种慈悲。。

第二十六讲 FILTER函数在某个数据列中去除数据的方法

大家好今日继续VBA数组与字典解决方案的讲解,今日讲第26讲内容,利用FILTER函数求从工作表中数据多的列中去除数据少的列中数据的方法,也就是说,在工作表中有两列数据,一列数据多,一列的数据少,我们要用数组的方案在数据多的列中去除数据少的列中的数据。其实,这在实际的工作中也是常见的,用其他的方案也可以解决,我们今天的目的是结合数组的学习,灵活掌握FILTER函数的具体实际应用,在使用前一定要清楚,FILTER函数是模糊查找。

1 代码的应用场景

今日的内容中我们会涉及到一维数组,二维数组,动态数组及FILTER函数的利用。我们先看下面数据截图:

在上面的截图中,B列数据是数据少的列,要在A列中把和B列有重复的数据去掉。

2 实现场景的代码及代码解读

如何做到呢?我们看下面的代码:

Sub MyNZsz_26() '第26讲 把少数据在多数据中的重复值去除

Sheets("26").Select

Dim temvarArr1(), temvarArr2()

varArr1 = Range("A1:A" & Range("A1").End(xlDown).Row) '将A列数据写入数组

varArr2 = Range("B1:B" & Range("B1").End(xlDown).Row) '将B列数据写入数组

'将A列数据写入动态一维数组

ReDim temvarArr1(1 To UBound(varArr1)) '将A列数据写入动态一维数组

For i = 1 To UBound(varArr1)

temvarArr1(i) = varArr1(i, 1)

Next

'将B列数据写入动态一维数组

ReDim temvarArr2(1 To UBound(varArr2))

For i = 1 To UBound(varArr2)

temvarArr2(i) = varArr2(i, 1)

Next

'在数据多的列中去掉数据少列的值

If UBound(temvarArr1) >= UBound(temvarArr2) Then

tem = Filter(temvarArr1, temvarArr2(1), False) '给TEM赋初始值

For i = 2 To UBound(temvarArr2)

tem = Filter(tem, temvarArr2(i), False)

Next i

Else

tem = Filter(temvarArr2, temvarArr1(1), False) '给TEM赋初始值

For i = 0 To UBound(varArr1)

tem = Filter(tem, temvarArr1(i), False)

Next i

End If

'MsgBox Join(tem)'如果需要提升用户用此代码

Range("C1") = "多数据中去掉少数据重复值"

[c2].Resize(UBound(tem) + 1) = WorksheetFunction.Transpose(tem)

End Sub

代码截图:

代码讲解:

1)Dim temvarArr1(), temvarArr2() 定义了两个动态的数组。为什么要定义动态数组呢?因为我们FILTER函数用到的参数要在一维固定数组里完成,而一维数组的大小我们要根据实际情况的不同而改变。

2 ) ReDim temvarArr1(1 To UBound(varArr1)) '将A列数据写入动态一维数组 这句话是给出了一维数组的大小

3) For i = 1 To UBound(varArr1)

temvarArr1(i) = varArr1(i, 1)

Next

这段代码把数据从二维数组赋值给一位数组

4) tem = Filter(temvarArr1, temvarArr2(1), False) '给TEM赋初始值

这句代码实现了给TEM的赋初始值,以方便后续代码应用TEM

5) For i = 2 To UBound(temvarArr2)

tem = Filter(tem, temvarArr2(i), False)

Next i

这段代码中TEM是一个循环利用的过程,在其中不断的把数据的重复值去掉

下面我们是运行后的截图:

今日内容回向:

1 上述过程中哪些是一维数组,哪些是二维数组?

2 上述过程中动态数组的意义是什么?

我多年的VBA实践经验,全部浓缩在以下教程中:



相关文章:

  • 旧版本NotionNext图片失效最小改动解决思路
  • 对第三方软件开展安全测评,如何保障其安全使用?
  • AimRT从入门到精通 - 04RPC客户端和服务器
  • 【网络安全实验】SSL协议的应用
  • 【AI提示词】系统分析员
  • react + antd 实现后台管理系统
  • 计算机视觉的未来发展趋势
  • 【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
  • python实现基于Windows系统计算器程序
  • 复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL)
  • FastAPI 与数据库交互示例
  • QGraphicsView QGraphicsScene QGraphicsItem 的关系
  • 文本中地理位置提取方法—正则和NLP模型
  • 吴恩达深度学习作业 RNN模型——字母级语言模型
  • Web 应用服务器:功能、类型与核心作用全解析
  • 写了个脚本将pdf转markdown
  • 题解传送门
  • 2025年- H18-Lc126-54.螺旋矩阵(矩阵)---java版
  • 【c++】【STL】priority_queue详解
  • Git 完整教程:初学者分步指南
  • 最火“五一”预订!小长假前两日多地接待游客量两位数增长,出境游订单井喷
  • 美国防部监察机构扩大“群聊门”事件调查范围
  • 格桑花盛放上海,萨迦艺术团襄阳公园跳起藏族舞
  • 解放日报:抢占科技制高点,赋能新质生产力
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 十四届全国人大常委会举行第四十四次委员长会议