[求助]excel怎样同时判断两个值,然后确定第三个值?
- meizizi如图,我想判断a和b的值,确定百分比
- wer.if可以跟表达式,嵌套128层
- 女武神if嵌套阅读太痛苦了。。。。做个个税都麻烦死了
- liuxuu笑喷了 哈哈哈哈
- ktv88808表格里面的百分比是有规律的。。。
第一列都是0%
第二列都是3%
第三列开始到最后一列同一行的是等差的。。。都差1%。。。。
用if。。应该不会太复杂。。。。 - billlll楼主,你这格式就没写对,很难用公式
- jammin2个match 搞定
- 孔通了回去看下~
- ooooooo用lookup吧,把判断做成数组,比if好用
- meizizi求方法
- turtlet008if里面嵌套and
- meizizi格式确定没问题
- meizizi我试了一下,太痛苦
if(and(这里要四个判断)然后才能得一个数,) - turtlet008判断太多可以用宏来做。公式做起来括弧太多容易搞不清。
- Cheve自定义公式可以搞定
写死 function 放到个人宏工作簿 然后直接写公式 =ValueEx(a,b) 试试看?
Function ValueEx(ByVal a As Double, ByVal b As Double) As Double
Dim TempVal As Double
Dim RefRng(1 To 5) As Variant
RefRng(1) = Array(0, 0.03, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1)
RefRng(2) = Array(0, 0.03, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11)
RefRng(3) = Array(0, 0.03, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13)
RefRng(4) = Array(0, 0.03, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14)
RefRng(5) = Array(0, 0.03, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15)
Select Case a
Case Is < 200
TempVal = ValueCut(RefRng(1), b)
Case 201 To 300
TempVal = ValueCut(RefRng(2), b)
Case 301 To 500
TempVal = ValueCut(RefRng(3), b)
Case 501.00001 To 800
TempVal = ValueCut(RefRng(4), b)
Case Is > 801
TempVal = ValueCut(RefRng(5), b)
Case Else
TempVal = 0
End Select
ValueEx = TempVal
End Function
Private Function ValueCut(ByVal ExValue As Variant, ByVal b As Double) As Double
Dim TmpExVal As Double
Select Case b
Case Is < 2
TmpExVal = ExValue(0)
Case 2 To 2.999999
TmpExVal = ExValue(1)
Case 3 To 4.09999999999
TmpExVal = ExValue(2)
Case 4.1 To 5.099999999
TmpExVal = ExValue(3)
Case 5.1 To 6.099999999
TmpExVal = ExValue(4)
Case 6.1 To 7.099999999
TmpExVal = ExValue(5)
Case 7.1 To 8.099999999
TmpExVal = ExValue(6)
Case Is >= 8.1
TmpExVal = ExValue(7)
Case Else
TmpExVal = 0
End Select
ValueCut = TmpExVal
End Function
[本帖最后由 Cheve 于 2014-11-2 14:24 编辑] - jammin按f1啊,或者google/百度
- jammin还有用自定义函数的真的喷了...
lz再给你个提示:
index(, match, match) - Chevematch里面还要再次判断a b的数值条件 可读性差 还是自定义公式省心 维护起来也方便
- 億万千楼上自定义函数喷了。。EXCEL和C语言有什么区别
- Cheve请问如果 a=302 b=4.8 用您的index(,match match)要怎么写公式呢 请赐教一下
- jamminmatch的可读性比自己写个vba可读性差我也是醉了
- jammin公式在C10,column A 和 row 1 建两个辅助行/列就OK。
lz的边界判定条件有点漏洞,我当是疏忽了吧。
能看懂不? - Cheve还要辅助列 太麻烦了 自己建一个公式 以后直接就是 =函数(a值,b值) 直接出结果肯定比你那个方便多了
- jammin还要自己写函数太麻烦了,直接招个大学生让他把结果算出来好了。
- Cheve直接写自定义公式 多简单呀
完全不需要什么 辅助列 辅助行 就像普通公式一样简单 - jammin喷了,如果这论坛就你一个人会写VBA,你走了之后谁来维护?LZ要改规则怎么变?重新学一遍VBA?你这个工作簿发给客户让人家客户怎么用?到底要不要信任你的VBA?求求你别会一点三脚猫的功夫就啥都用这个好吗?真不合适
- Cheve稍微修改一下就可以写出 楼主也很容易维护的 公式 只要修改 工作表里面的 数字或者条件数值直接可以 维护 不需要到vba里面去维护的 这个只是随便写的
[本帖最后由 Cheve 于 2014-11-3 10:15 编辑] - Cheve像你这种又是添加列 又是添加辅助行的 难道客户就能接受?而且你让客户跟着你的所谓match模糊判断查找 感觉就不靠谱 难道 会添加一些 辅助 和用一些 index(match)就不是三脚猫了吗
- jammin喷了,模糊判断不靠谱我就呵呵厚了。
你用你的公式判断一下valueex(0,2.9999999),看看你的客户会不会来教你做人。
算了最后一贴,感觉浪费时间 - Cheve你那个完全就是抬杠, 如果客户真需要精确到多少位小数完全可以预先设好 哪怕100位小数都可以
- zxsoft我的思路和15楼一样,一点也不麻烦。按Alt+F11,把15楼的代码帖到你的Sheet里就行