Excel精英培训网

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

[已解决]拜求!多列条件数值引用解决方案

[复制链接]
发表于 2011-10-26 17:47 | 显示全部楼层 |阅读模式
多列条件数值引用.rar (16.17 KB, 下载次数: 42)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-26 19:37 | 显示全部楼层
只能告诉你用=SUMPRODUCT()  第三个位置文字太多,不会了。
回复

使用道具 举报

发表于 2011-10-26 19:53 | 显示全部楼层    本楼为最佳答案   
Sub test()
Dim ar1(), ar2(), ar3()
Set d = CreateObject("Scripting.Dictionary")
i% = [a65536].End(xlUp).Row
ar1 = Range("a2:g" & i).Value
For i = UBound(ar1) To 1 Step -1
  d(ar1(i, 1) & ar1(i, 2)) = i
Next
i = [i65536].End(xlUp).Row
ar2 = Range("i2:m" & i).Value
ReDim ar3(1 To UBound(ar2), 1 To 1)
For i = 1 To UBound(ar2)
   i2% = d(ar2(i, 1) & ar2(i, 2))
   Do While i2 <= UBound(ar1)
      If InStr(ar1(i2, 3), "以下") Then
         ke% = Val(ar1(i2, 3))
      ElseIf InStr(ar1(i2, 3), "-") Then
         ke% = Val(Split(ar1(i2, 3), "-")(1))
      Else
         ke% = 1000
      End If
      If ar2(i, 3) <= ke Then
        If ar1(i2, 4) = "" Then
           ar3(i, 1) = ar1(i2, 6)
           i2 = UBound(ar1)
        Else
         Do While i2 <= UBound(ar1)
            If InStr(ar1(i2, 4), "以下") Then
               ke% = Val(ar1(i2, 4))
            ElseIf InStr(ar1(i2, 4), "-") Then
               ke% = Val(Split(ar1(i2, 4), "-")(1))
            Else
               ke% = 1000
            End If
            If ar2(i, 5) <= ke Then
               If ar2(i, 4) < 140 Then
                  ar3(i, 1) = ar1(i2, 6)
               Else
                  ar3(i, 1) = ar1(i2, 7)
               End If
               i2 = UBound(ar1)
            End If
            i2 = i2 + 1
         Loop
        End If
      End If
      i2 = i2 + 1
   Loop
Next
[n2].Resize(i - 1) = ar3
End Sub
回复

使用道具 举报

发表于 2011-10-26 19:57 | 显示全部楼层
上面的代码是在你的文件中的数据全都排好序的情况下。
就你目前传上来的,78至86行就没按你的规则排序。得象你的2至20行一样排好了才能适用上面的代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 20:16 , Processed in 0.383401 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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