Excel精英培训网

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

IF语句过程太大,求解

[复制链接]
发表于 2014-3-21 21:33 | 显示全部楼层 |阅读模式
请教老师、高手,我是EXCEL VBA感兴者,我在工作中利用电子表计算一些数据,例如Sheet1.range("a1")-range("a100")分别代表100种原料成份,range("b1")-range("b100")分别填100种原料价格,sheet2.range("a1")-range("a3")分别代表一个产品是Sheet1表中随机不同三种原料,sheet2.range("b1")-sheet2.range("b3")对应三种不同原料价格,本人用if  then elseif  语句和数据有效性sheet2.range("a1")选择sheet1中100种原料和相应价格,sheet2.range("a2")和sheet2.range("a3")在前23条语句只显示相应原料和价格,之后就只显示相应原料(数据有效性显示好解决),sheet2.range("b2")和sheet2.range("b3")不显示价格,是不是过程太大,如何解决?求解
 楼主| 发表于 2014-3-21 21:40 | 显示全部楼层
If Sheet1.Range("i11") = Sheet8.Range("c2") Then
Sheet1.Range("j11") = Sheet8.Range("d2")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c3") Then
Sheet1.Range("j11") = Sheet8.Range("d3")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c4") Then
Sheet1.Range("j11") = Sheet8.Range("d4")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c5") Then
Sheet1.Range("j11") = Sheet8.Range("d5")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c6") Then
Sheet1.Range("j11") = Sheet8.Range("d6")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c7") Then
Sheet1.Range("j11") = Sheet8.Range("d7")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c8") Then
Sheet1.Range("j11") = Sheet8.Range("d8")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c9") Then
Sheet1.Range("j11") = Sheet8.Range("d9")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c10") Then
Sheet1.Range("j11") = Sheet8.Range("d10")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c11") Then
Sheet1.Range("j11") = Sheet8.Range("d11")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c12") Then
Sheet1.Range("j11") = Sheet8.Range("d12")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c13") Then
Sheet1.Range("j11") = Sheet8.Range("d13")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c14") Then
Sheet1.Range("j11") = Sheet8.Range("d14")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c15") Then
Sheet1.Range("j11") = Sheet8.Range("d15")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c16") Then
Sheet1.Range("j11") = Sheet8.Range("d16")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c17") Then
Sheet1.Range("j11") = Sheet8.Range("d17")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c18") Then
Sheet1.Range("j11") = Sheet8.Range("d18")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c19") Then
Sheet1.Range("j11") = Sheet8.Range("d19")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c20") Then
Sheet1.Range("j11") = Sheet8.Range("d20")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c21") Then
Sheet1.Range("j11") = Sheet8.Range("d21")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c22") Then
Sheet1.Range("j11") = Sheet8.Range("d22")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c23") Then
Sheet1.Range("j11") = Sheet8.Range("d23")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c24") Then
Sheet1.Range("j11") = Sheet8.Range("d24")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c25") Then
Sheet1.Range("j11") = Sheet8.Range("d25")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c26") Then
Sheet1.Range("j11") = Sheet8.Range("d26")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c27") Then
Sheet1.Range("j11") = Sheet8.Range("d27")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c28") Then
Sheet1.Range("j11") = Sheet8.Range("d28")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c29") Then
Sheet1.Range("j11") = Sheet8.Range("d29")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c30") Then
Sheet1.Range("j11") = Sheet8.Range("d30")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c31") Then
Sheet1.Range("j11") = Sheet8.Range("d31")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c32") Then
Sheet1.Range("j11") = Sheet8.Range("d32")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c33") Then
Sheet1.Range("j11") = Sheet8.Range("d33")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c34") Then
Sheet1.Range("j11") = Sheet8.Range("d34")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c35") Then
Sheet1.Range("j11") = Sheet8.Range("d35")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c36") Then
Sheet1.Range("j11") = Sheet8.Range("d36")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c37") Then
Sheet1.Range("j11") = Sheet8.Range("d37")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c38") Then
Sheet1.Range("j11") = Sheet8.Range("d38")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c39") Then
Sheet1.Range("j11") = Sheet8.Range("d39")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c40") Then
Sheet1.Range("j11") = Sheet8.Range("d40")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c41") Then
Sheet1.Range("j11") = Sheet8.Range("d41")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c42") Then
Sheet1.Range("j11") = Sheet8.Range("d42")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c43") Then
Sheet1.Range("j11") = Sheet8.Range("d43")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c44") Then
Sheet1.Range("j11") = Sheet8.Range("d44")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c45") Then
Sheet1.Range("j11") = Sheet8.Range("d45")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c46") Then
Sheet1.Range("j11") = Sheet8.Range("d46")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c47") Then
Sheet1.Range("j11") = Sheet8.Range("d47")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c48") Then
Sheet1.Range("j11") = Sheet8.Range("d48")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c49") Then
Sheet1.Range("j11") = Sheet8.Range("d49")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c50") Then
Sheet1.Range("j11") = Sheet8.Range("d50")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c51") Then
Sheet1.Range("j11") = Sheet8.Range("d51")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c52") Then
Sheet1.Range("j11") = Sheet8.Range("d52")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c53") Then
Sheet1.Range("j11") = Sheet8.Range("d53")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c54") Then
Sheet1.Range("j11") = Sheet8.Range("d54")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c55") Then
Sheet1.Range("j11") = Sheet8.Range("d55")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c56") Then
Sheet1.Range("j11") = Sheet8.Range("d56")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c57") Then
Sheet1.Range("j11") = Sheet8.Range("d57")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c58") Then
Sheet1.Range("j11") = Sheet8.Range("d58")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c59") Then
Sheet1.Range("j11") = Sheet8.Range("d59")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c60") Then
Sheet1.Range("j11") = Sheet8.Range("d60")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c61") Then
Sheet1.Range("j11") = Sheet8.Range("d61")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c62") Then
Sheet1.Range("j11") = Sheet8.Range("d62")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c63") Then
Sheet1.Range("j11") = Sheet8.Range("d63")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c64") Then
Sheet1.Range("j11") = Sheet8.Range("d64")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c65") Then
Sheet1.Range("j11") = Sheet8.Range("d65")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c66") Then
Sheet1.Range("j11") = Sheet8.Range("d66")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c67") Then
Sheet1.Range("j11") = Sheet8.Range("d67")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c68") Then
Sheet1.Range("j11") = Sheet8.Range("d68")

Sheet1.Range("j11") = Sheet8.Range("d69")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c70") Then
Sheet1.Range("j11") = Sheet8.Range("d70")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c71") Then
Sheet1.Range("j11") = Sheet8.Range("d71")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c72") Then
Sheet1.Range("j11") = Sheet8.Range("d72")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c73") Then
Sheet1.Range("j11") = Sheet8.Range("d73")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c74") Then
Sheet1.Range("j11") = Sheet8.Range("d74")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c75") Then
Sheet1.Range("j11") = Sheet8.Range("d75")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c76") Then
Sheet1.Range("j11") = Sheet8.Range("d76")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c77") Then
Sheet1.Range("j11") = Sheet8.Range("d77")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c78") Then
Sheet1.Range("j11") = Sheet8.Range("d78")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c79") Then
Sheet1.Range("j11") = Sheet8.Range("d79")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c80") Then
Sheet1.Range("j11") = Sheet8.Range("d80")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c81") Then
Sheet1.Range("j11") = Sheet8.Range("d81")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c82") Then
Sheet1.Range("j11") = Sheet8.Range("d82")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c83") Then
Sheet1.Range("j11") = Sheet8.Range("d83")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c84") Then
Sheet1.Range("j11") = Sheet8.Range("d84")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c85") Then
Sheet1.Range("j11") = Sheet8.Range("d85")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c86") Then
Sheet1.Range("j11") = Sheet8.Range("d86")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c87") Then
Sheet1.Range("j11") = Sheet8.Range("d87")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c88") Then
Sheet1.Range("j11") = Sheet8.Range("d88")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c89") Then
Sheet1.Range("j11") = Sheet8.Range("d89")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c90") Then
Sheet1.Range("j11") = Sheet8.Range("d90")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c91") Then
Sheet1.Range("j11") = Sheet8.Range("d91")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c92") Then
Sheet1.Range("j11") = Sheet8.Range("d92")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c93") Then
Sheet1.Range("j11") = Sheet8.Range("d93")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c94") Then
Sheet1.Range("j11") = Sheet8.Range("d294")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c95") Then
Sheet1.Range("j11") = Sheet8.Range("d95")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c96") Then
Sheet1.Range("j11") = Sheet8.Range("d96")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c97") Then
Sheet1.Range("j11") = Sheet8.Range("d97")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c98") Then
Sheet1.Range("j11") = Sheet8.Range("d98")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c99") Then
Sheet1.Range("j11") = Sheet8.Range("d99")
ElseIf Sheet1.Range("i11") = Sheet8.Range("c100") Then
Sheet1.Range("j11") = Sheet8.Range("d100")
End If
以上是IF语句,请问如何瘦身?
回复

使用道具 举报

发表于 2014-3-21 21:45 | 显示全部楼层
gzc 发表于 2014-3-21 21:40
If Sheet1.Range("i11") = Sheet8.Range("c2") Then
Sheet1.Range("j11") = Sheet8.Range("d2")
ElseIf S ...

搜一下 主题:字典 二级下拉数据有效性
回复

使用道具 举报

 楼主| 发表于 2014-3-21 21:46 | 显示全部楼层
以上语句只能执行一部分,语句无问题,怎么办,如何瘦身?
回复

使用道具 举报

 楼主| 发表于 2014-3-21 21:50 | 显示全部楼层
请精英在百忙中关照一下,本人QQ邮箱:1812431378,谢谢!
回复

使用道具 举报

发表于 2014-3-22 09:33 | 显示全部楼层
这样写真是
回复

使用道具 举报

发表于 2014-3-22 14:09 | 显示全部楼层
这不是一个写法问题,而是一个算法问题。不用IF就用CASE嘛
回复

使用道具 举报

发表于 2014-3-22 17:10 | 显示全部楼层
本帖最后由 FF7 于 2014-3-22 17:18 编辑
gzc 发表于 2014-3-21 21:40
If Sheet1.Range("i11") = Sheet8.Range("c2") Then
Sheet1.Range("j11") = Sheet8.Range("d2")
ElseIf S ...

你的整个语句可以有两种简化方法,如下:
第一种:使用循环
  1. Dim i As Long
  2. For i = 2 to 100
  3.     If Sheet1.Range("i11") = Sheet8.Range("c" & i)  Then
  4.         Sheet1.Range("j11") = Sheet8.Range("d" & i)
  5.         Exit For
  6.     End If
  7. Next
复制代码
第二种:使用Find函数,推荐使用Find函数,简便而且效率高。
  1. Dim Rng as Range
  2. Set Rng = Sheet8.Range("c2:C100").Find( Sheet1.Range("i11"), , ,xlWhole)
  3. If Not Rng Is Nothing Then  Sheet1.Range("j11") = Rng(1,2).Value
复制代码
回复

使用道具 举报

发表于 2014-3-23 09:47 | 显示全部楼层
用字典更好吧
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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