Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1660|回复: 3

[VBA] 用VBA分别计算第1次采购价和最后一次采购价

[复制链接]
发表于 2016-11-19 13:28 | 显示全部楼层 |阅读模式
用VBA分别计算第1次采购价和最后一次采购价


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-11-19 16:20 | 显示全部楼层
Sub 第1次采购价()
Dim i&, j&
m = [a65536].End(3).Row + 1
arr = Range("a2:c" & m)
brr = Application.Index(arr, , 2)
ReDim crr(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr) - 1
    If brr(i, 1) <> "" Then x = x + 1: crr(x, 1) = brr(i, 1)
    For j = i + 1 To UBound(arr)
        If brr(j, 1) = brr(i, 1) Then brr(j, 1) = ""
    Next
Next

For i = 1 To x
    For j = 1 To UBound(arr)
        If arr(j, 2) = crr(i, 1) Then
            crr(i, 2) = arr(j, 3)
             Exit For
        End If
    Next
Next
[e2].Resize(x, 2) = crr
End Sub

Sub 第2次采购价()
Dim i&, j&
m = [a65536].End(3).Row + 1
arr = Range("a2:c" & m)
brr = Application.Index(arr, , 2)
ReDim crr(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr) - 1
    If brr(i, 1) <> "" Then x = x + 1: crr(x, 1) = brr(i, 1)
    For j = i + 1 To UBound(arr)
        If brr(j, 1) = brr(i, 1) Then brr(j, 1) = ""
    Next
Next

For i = 1 To x
    For j = UBound(arr) To 1 Step -1
        If arr(j, 2) = crr(i, 1) Then
            crr(i, 2) = arr(j, 3)
             Exit For
        End If
    Next
Next
[i2].Resize(x, 2) = crr
End Sub
回复

使用道具 举报

发表于 2016-11-20 09:40 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, d, i&, s&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("a1").CurrentRegion
  5. ReDim brr(1 To UBound(arr), 1 To 3)
  6. For i = 2 To UBound(arr)
  7.     If Not d.exists(arr(i, 2)) Then
  8.         s = s + 1
  9.         d(arr(i, 2)) = s
  10.         brr(s, 1) = arr(i, 2)
  11.         brr(s, 2) = arr(i, 3)
  12.         brr(s, 3) = arr(i, 3)
  13.     Else
  14.         n = d(arr(i, 2))
  15.         brr(n, 3) = arr(i, 3)
  16.     End If
  17. Next
  18. [e21:g21] = Array("品名", "第一次采购价", "最后一次采购价")
  19. Range("e22").Resize(s, 3) = brr
  20. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
laoau138 + 3 来学习

查看全部评分

回复

使用道具 举报

发表于 2016-12-7 09:12 | 显示全部楼层
好聪明的方案,学习了
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 11:01 , Processed in 0.215258 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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