Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: laoau138

[VBA] VBA把字典改写成 纯数组方法 按列计算遗漏值

[复制链接]
 楼主| 发表于 2017-2-9 23:02 | 显示全部楼层
today0427 发表于 2017-2-9 22:59
说明咱俩水平差不多

错了,你比我强N倍
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2017-2-9 23:03 | 显示全部楼层
不能 如果看不懂 留言明天给你写注释 现在晚了我关电脑了
回复

使用道具 举报

发表于 2017-2-9 23:04 | 显示全部楼层
相当于把出现过的数字那个空用0来占位 表示出现了
回复

使用道具 举报

 楼主| 发表于 2017-2-9 23:05 | 显示全部楼层
today0427 发表于 2017-2-9 23:03
不能 如果看不懂 留言明天给你写注释 现在晚了我关电脑了

好,你明天写注释

如此简洁高明的写法,只有你想得到
回复

使用道具 举报

发表于 2017-2-9 23:06 | 显示全部楼层
呦小样 会夸人了啊 有进步!加油!
回复

使用道具 举报

 楼主| 发表于 2017-2-9 23:07 | 显示全部楼层
today0427 发表于 2017-2-9 22:59
说明咱俩水平差不多

昨天看见你在回答  ADO

相信这段时间,你的VBA神功一定增进了不少
回复

使用道具 举报

发表于 2017-2-9 23:08 | 显示全部楼层
咳咳咳 客气客气 还需不断努力!共勉!
回复

使用道具 举报

 楼主| 发表于 2017-2-9 23:10 | 显示全部楼层
本帖最后由 laoau138 于 2017-2-9 23:11 编辑
today0427 发表于 2017-2-9 23:06
呦小样 会夸人了啊 有进步!加油!

没有夸奖啊, 你确实进步了

下面几个代码,都比不上你


Sub test()
Dim SArr1(), SArr2, Tarr(), i%, j%, n%
SArr2 = [k10:aq10]
n = [c11].End(xlDown).Row
ReDim SArr1(11 To n)
ReDim Tarr(11 To n, 1 To 33)
For i = 11 To n
  For j = 3 To 8
    SArr1(i) = SArr1(i) & "," & Format(Cells(i, j), "00")
  Next
Next
For i = 11 To n
  For j = 1 To 33
    If i = 11 Then
       Tarr(i, j) = IIf(InStr(1, SArr1(i), "," & Format(SArr2(1, j), "00")) > 0, 0, 1)
    Else
       Tarr(i, j) = IIf(InStr(1, SArr1(i), "," & Format(SArr2(1, j), "00")) > 0, 0, 1 + Tarr(i - 1, j))
    End If
  Next
Next
[k11].Resize(n - 10, 33) = Tarr
End Sub



Sub pengyx()
Dim rw%, ar, br, i%, s%, j%
[k11:aq11] = 1
rw = Sheet1.Range("c" & Rows.Count).End(3).Row
ar = Sheet1.Range("k11:aq" & rw)
br = Sheet1.Range("c11:h" & rw)
For i = 1 To UBound(br, 2)
    ar(1, br(1, i)) = 0
Next
For i = 2 To UBound(ar)
    s = 1
    For j = 1 To 33
        If br(i, s) = j Then
            ar(i, j) = 0
            If s < 6 Then s = s + 1
        Else
            ar(i, j) = ar(i - 1, j) + 1
        End If
    Next
Next
Sheet1.Range("k11").Resize(UBound(ar), 33) = ar
End Sub


Sub Command1_Click()
  Dim arrSrc, arrDest, arrFlag
  Dim lStartr As Long
  Dim lEndr As Long
  Dim lr As Long
  Dim lc As Long
  lStartr = 11
  lEndr = Range("B65536").End(xlUp).Row
  If lEndr < lStartr Then Exit Sub
  Range("K" & lStartr & ":AQ" & lEndr).ClearContents
  arrSrc = Range("C" & lStartr & ":H" & lEndr)
  arrDest = Range("K" & lStartr & ":AQ" & lEndr)
  arrFlag = arrDest
  For lr = 1 To lEndr - lStartr + 1
    For lc = 1 To 6
      arrFlag(lr, arrSrc(lr, lc)) = 1
    Next lc
    If lr = 1 Then
      For lc = 1 To 33
        If arrFlag(lr, lc) = 0 Then
          arrDest(lr, lc) = 1
        Else
          arrDest(lr, lc) = 0
        End If
      Next lc
    Else
      For lc = 1 To 33
        If arrFlag(lr, lc) = 0 Then
          arrDest(lr, lc) = arrDest(lr - 1, lc) + 1
        Else
          arrDest(lr, lc) = 0
        End If
      Next lc
    End If
  Next lr
  Range("K" & lStartr & ":AQ" & lEndr) = arrDest
End Sub


回复

使用道具 举报

发表于 2017-2-9 23:24 | 显示全部楼层
能看出来我进步了 你也有大进步啊 最关键你现在能加6分了!咱俩也算得上看着对方一点点成长呢吧!来握个手!
回复

使用道具 举报

 楼主| 发表于 2017-2-9 23:30 | 显示全部楼层
today0427 发表于 2017-2-9 23:24
能看出来我进步了 你也有大进步啊 最关键你现在能加6分了!咱俩也算得上看着对方一点点成长呢吧!来握个 ...

可爱的today   你还没有睡
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 10:56 , Processed in 0.283115 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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