excel提取相同动作的最后一条,用VB代码实现

找到每个手机号码最后一条“充值”记录显示1... 找到每个手机号码最后一条“充值”记录显示1 展开
 我来答
眯住眼串针
科技发烧友

2017-03-27 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:1.1万
采纳率:58%
帮助的人:3091万
展开全部
只是充值的最后一条?
用公式就能弄出来
C2
=IF(SUMPRODUCT((A$2:A$1000=A2)*(B$2:B$1000="充值"))=SUMPRODUCT((A$2:A2=A2)*(B$2:B2="充值")),1,"")
下拉
PS:原来的公式漏了一个逗号。。。。
更多追问追答
追问
1万多条,表卡死了,我不用公式
追答
Sub test()
Set dic = CreateObject("scripting.dictionary")
myrow = Range("A65536").End(xlUp).Row
arr = Range("A2:B" & myrow)
n = UBound(arr)
ReDim brr(1 To n)
For i = n To 1 Step -1
    If Not dic.exists(arr(i, 1)) And arr(i, 2) = "充值" Then
        dic(arr(i, 1)) = ""
        brr(i) = 1
    End If
Next
Range("C2:C" & myrow).ClearContents
Range("C2:C" & myrow) = Application.Transpose(brr)
End Sub
Excel办公_VBA
2017-03-27 · 教育领域创作者
个人认证用户
Excel办公_VBA
采纳数:3279 获赞数:2332

向TA提问 私信TA
展开全部
可以使用for循环,从下往上遍历,找到的第一个动作对应的,就应该是符合条件的
Set d = CreateObject("scripting.dictionary")
for j=cells(rows.count,2).end(3).row to 2 step -1
if not d.exists(cells(j,2).value) then
d(cells(j,2).value)=j
endif
next j
最后字典里的值就是第二列从下数第一次出现的名称及对应的行号
追问
测试无效
追答
以上代码只是给了一个方式,具体字典里的值在哪里赋值,还有需要楼主根据需求来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式