送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们好,今天要分享的是一道比较特殊的题目,同时这道题目也比较重要,因为今天也会向大家介绍一个非常重要的函数应用。
题目是这样的:
这个类型的题目在工作中也比较常见。小伙伴们有什么好的方法吗?
REPT函数法
在单元格D2中输入下列公式,并向下拖曳即可。
=REPT("是",COUNTIFS($A$2:A2,A2,$C$2:C2,0)=0)
思路:
COUNTIFS函数按条件统计,注意,这里是在一个动态的数据区域中进行统计。在第一个“0”出现前,所有满足料号条件的都是有效数据
接下来,直接使用REPT函数来对“是”重复显示。由于COUNTIFS()=0的结果是“TRUE”,因此“是”重复一次。这里,REPT函数替代了IF函数,书写上更加简洁
写一小段代码来解决这个问题吧。
完整代码如下:
Sub test()
Dim myarr As Variant, brr(), mydic As Object, i As Integer, j As Integer
myarr = Range("A1").CurrentRegion
Set mydic = CreateObject("scripting.dictionary")
ReDim brr(1 To UBound(myarr) - 1, 1 To 1)
For i = 2 To UBound(myarr)
If Not mydic.exists(myarr(i, 1)) And myarr(i, 3) = 0 Then
mydic(myarr(i, 1)) = i
End If
Next i
For i = 1 To mydic.Count
For j = 2 To mydic.items()(i - 1)
If myarr(j, 1) = mydic.keys()(i - 1) And myarr(j, 3) <> 0 Then
brr(j - 1, 1) = "是"
End If
Next j
Next i
[f2].Resize(UBound(brr), 1) = brr
End Sub
第5行代码:重新定义动态数组范围
第6-10行代码:将数据装入字典并赋值。赋值为满足条件的数据所在行号
第11-17行代码:对数组brr赋值。凡是满足条件myarr(j, 1) = mydic.keys()(i - 1) And myarr(j, 3) <> 0,都对数组brr对应位置的数据赋值
本期内容练习文件提取方式:
链接:https://pan.baidu.com/s/1w1JE5Z1SzX6sIvX_Ifyxgg?pwd=ueer
提取码:ueer
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
联系客服