EXCEL表中IF函数的循环使用——让问题变得轻松

标签:
if函数excel表中if函数的循if函数的使用excel表中的条件函数条件函数 |
分类: IT技术经验漫谈 |
巧用IF函数的嵌入使多重循环条件变得简单
先看下表数据1至数据5分别对应A至E不同的列:
A |
B |
C |
D |
E |
数据1 |
数据2 |
数据3 |
数据4 |
数据5 |
240 |
120 |
50% |
300 |
288.598167 |
200 |
396 |
198% |
60 |
8.79079151 |
240 |
82 |
34.17% |
300 |
173.216064 |
450 |
797 |
177.11% |
80 |
30.8911228 |
240 |
312 |
130% |
300 |
182.898594 |
240 |
278 |
115.83% |
300 |
155.91071 |
200 |
1560 |
780% |
60 |
9.14982319 |
450 |
750 |
166.67% |
80 |
17.2938814 |
200 |
345 |
172.50% |
60 |
2.47704124 |
120 |
176 |
146.67% |
40 |
47.3767281 |
680 |
771 |
113.38% |
100 |
106.951024 |
450 |
589 |
130.89% |
80 |
38.62883 |
240 |
371 |
154.58% |
300 |
270.862876 |
450 |
1256 |
279.11% |
80 |
46.2788124 |
240 |
140 |
58.33% |
300 |
292.093167 |
200 |
941 |
470.50% |
60 |
185.905873 |
50 |
246 |
492% |
300 |
256.913421 |
240 |
160 |
66.67% |
300 |
5.90800953 |
240 |
788 |
328.33% |
300 |
359.197865 |
240 |
347 |
144.58% |
300 |
277.263976 |
我们现在给出下列条件,当数据5在不同的区间给予不同的返回值:
1、数据5在区间(0,50 】则返回5;
2、数据5在区间(50,100 】则返回10;
3、数据5在区间(100,150 】则返回15;
4、数据5在区间(150,200 】则返回20;
5、数据5在区间(200,250 】则返回25;
6、250以上返回40。
我们按照常规的思维方式首相将数据5分数据段—数据段再对应返回值;思维方式没错,但是请问如何操作???
在这里我先介绍两种最基本的思维操作明细方法:
方法一:制定另一个数据表,用两个数据表配合使用
如下设置SHEET2,刚才的数据表看着SHEET1,则制定表如下:
A |
B |
0 |
5 |
1 |
10 |
2 |
15 |
3 |
20 |
4 |
25 |
5 |
40 |
然后将原来的表分级如下:在F列将所有的数据对应50为间断跳跃,则我们使用函数INT将闭区间的集解决,公式如下:=INT(E3/50)
A |
B |
C |
D |
E |
F |
数据1 |
数据2 |
数据3 |
数据4 |
数据5 |
数据级别 |
240 |
120 |
50% |
300 |
288.598167 |
=INT(E3/50) |
200 |
396 |
198% |
60 |
8.79079151 |
=INT(E3/51) |
240 |
82 |
34.17% |
300 |
173.216064 |
=INT(E3/52) |
450 |
797 |
177.11% |
80 |
30.8911228 |
=INT(E3/53) |
240 |
312 |
130% |
300 |
182.898594 |
=INT(E3/54) |
240 |
278 |
115.83% |
300 |
155.91071 |
=INT(E3/55) |
200 |
1560 |
780% |
60 |
9.14982319 |
=INT(E3/56) |
450 |
750 |
166.67% |
80 |
17.2938814 |
=INT(E3/57) |
200 |
345 |
172.50% |
60 |
2.47704124 |
=INT(E3/58) |
120 |
176 |
146.67% |
40 |
47.3767281 |
=INT(E3/59) |
680 |
771 |
113.38% |
100 |
106.951024 |
=INT(E3/60) |
450 |
589 |
130.89% |
80 |
38.62883 |
=INT(E3/61) |
240 |
371 |
154.58% |
300 |
270.862876 |
=INT(E3/62) |
450 |
1256 |
279.11% |
80 |
46.2788124 |
=INT(E3/63) |
240 |
140 |
58.33% |
300 |
292.093167 |
=INT(E3/64) |
200 |
941 |
470.50% |
60 |
185.905873 |
=INT(E3/65) |
50 |
246 |
492% |
300 |
256.913421 |
=INT(E3/66) |
240 |
160 |
66.67% |
300 |
5.90800953 |
=INT(E3/67) |
240 |
788 |
328.33% |
300 |
359.197865 |
=INT(E3/68) |
240 |
347 |
144.58% |
300 |
277.263976 |
=INT(E3/69) |
返回数值如下:
A |
B |
C |
D |
E |
F |
数据1 |
数据2 |
数据3 |
数据4 |
数据5 |
数据级别 |
240 |
120 |
50% |
300 |
288.598167 |
5 |
200 |
396 |
198% |
60 |
8.79079151 |
0 |
240 |
82 |
34.17% |
300 |
173.216064 |
3 |
450 |
797 |
177.11% |
80 |
30.8911228 |
0 |
240 |
312 |
130% |
300 |
182.898594 |
3 |
240 |
278 |
115.83% |
300 |
155.91071 |
3 |
200 |
1560 |
780% |
60 |
9.14982319 |
0 |
450 |
750 |
166.67% |
80 |
17.2938814 |
0 |
200 |
345 |
172.50% |
60 |
2.47704124 |
0 |
120 |
176 |
146.67% |
40 |
47.3767281 |
0 |
680 |
771 |
113.38% |
100 |
106.951024 |
2 |
450 |
589 |
130.89% |
80 |
38.62883 |
0 |
240 |
371 |
154.58% |
300 |
270.862876 |
5 |
450 |
1256 |
279.11% |
80 |
46.2788124 |
0 |
240 |
140 |
58.33% |
300 |
292.093167 |
5 |
200 |
941 |
470.50% |
60 |
185.905873 |
3 |
50 |
246 |
492% |
300 |
256.913421 |
5 |
240 |
160 |
66.67% |
300 |
5.90800953 |
0 |
240 |
788 |
328.33% |
300 |
359.197865 |
7 |
240 |
347 |
144.58% |
300 |
277.263976 |
5 |
针对F列数据可以做如下的操作,以F列数据为标的数据,在SHEET1中的G列中使用SHEET2中的表使用公式:
=VLOOKUP(F:F,Sheet2!A:B,2,0)往下拖,则会显示出如下的数据:
A |
B |
C |
D |
E |
F |
G |
数据1 |
数据2 |
数据3 |
数据4 |
数据5 |
=VLOOKUP(F:F,Sheet2!A:B,2,0) |
#N/A |
240 |
120 |
50% |
300 |
288.598167 |
5 |
40 |
200 |
396 |
198% |
60 |
8.79079151 |
0 |
5 |
240 |
82 |
34.17% |
300 |
173.216064 |
3 |
20 |
450 |
797 |
177.11% |
80 |
30.8911228 |
0 |
5 |
240 |
312 |
130% |
300 |
182.898594 |
3 |
20 |
240 |
278 |
115.83% |
300 |
155.91071 |
3 |
20 |
200 |
1560 |
780% |
60 |
9.14982319 |
0 |
5 |
450 |
750 |
166.67% |
80 |
17.2938814 |
0 |
5 |
200 |
345 |
172.50% |
60 |
2.47704124 |
0 |
5 |
120 |
176 |
146.67% |
40 |
47.3767281 |
0 |
5 |
680 |
771 |
113.38% |
100 |
106.951024 |
2 |
15 |
450 |
589 |
130.89% |
80 |
38.62883 |
0 |
5 |
240 |
371 |
154.58% |
300 |
270.862876 |
5 |
40 |
450 |
1256 |
279.11% |
80 |
46.2788124 |
0 |
5 |
240 |
140 |
58.33% |
300 |
292.093167 |
5 |
40 |
200 |
941 |
470.50% |
60 |
185.905873 |
3 |
20 |
50 |
246 |
492% |
300 |
256.913421 |
5 |
40 |
240 |
160 |
66.67% |
300 |
5.90800953 |
0 |
5 |
240 |
788 |
328.33% |
300 |
359.197865 |
7 |
#N/A |
240 |
347 |
144.58% |
300 |
277.263976 |
5 |
40 |
出错的地方我们也看到了,这里为了避免出现这样的情况可以加入公式IF函数妙用限制匹配过来的数据。我们在G列中的公式修改成如下的格式:为了比较直接加入H列公式,将下列公司写入H列即可。
=IF(F3>=6,40,VLOOKUP(F:F,Sheet2!A:B,2,0))则下拖数据后会显示出数据如下:
A |
B |
C |
D |
E |
F |
G |
H |
数据1 |
数据2 |
数据3 |
数据4 |
数据5 |
数据级别 |
#N/A |
=IF(F3>=6,40,VLOOKUP(F:F,Sheet2!A:B,2,0)) |
240 |
120 |
50% |
300 |
288.598167 |
5 |
40 |
40 |
200 |
396 |
198% |
60 |
8.79079151 |
0 |
5 |
5 |
240 |
82 |
34.17% |
300 |
173.216064 |
3 |
20 |
20 |
450 |
797 |
177.11% |
80 |
30.8911228 |
0 |
5 |
5 |
240 |
312 |
130% |
300 |
182.898594 |
3 |
20 |
20 |
240 |
278 |
115.83% |
300 |
155.91071 |
3 |
20 |
20 |
200 |
1560 |
780% |
60 |
9.14982319 |
0 |
5 |
5 |
450 |
750 |
166.67% |
80 |
17.2938814 |
0 |
5 |
5 |
200 |
345 |
172.50% |
60 |
2.47704124 |
0 |
5 |
5 |
120 |
176 |
146.67% |
40 |
47.3767281 |
0 |
5 |
5 |
680 |
771 |
113.38% |
100 |
106.951024 |
2 |
15 |
15 |
450 |
589 |
130.89% |
80 |
38.62883 |
0 |
5 |
5 |
240 |
371 |
154.58% |
300 |
270.862876 |
5 |
40 |
40 |
450 |
1256 |
279.11% |
80 |
46.2788124 |
0 |
5 |
5 |
240 |
140 |
58.33% |
300 |
292.093167 |
5 |
40 |
40 |
200 |
941 |
470.50% |
60 |
185.905873 |
3 |
20 |
20 |
50 |
246 |
492% |
300 |
256.913421 |
5 |
40 |
40 |
240 |
160 |
66.67% |
300 |
5.90800953 |
0 |
5 |
5 |
240 |
788 |
328.33% |
300 |
359.197865 |
7 |
#N/A |
40 |
240 |
347 |
144.58% |
300 |
277.263976 |
5 |
40 |
40 |
以上我们就得出了返回值。目的达到。
方法二:只用IF函数实现该数据的返回值。
这个方法不用另外的表依靠,只需要单纯的将IF函数循环使用即可。
在这里为了简化篇幅我直接将公式一步到位,如果你是菜鸟看不懂,请谅解。但是有基础的看起来比较容易,如果你是高手请赐教:
我将公式直接写在上方并直接返回参数值,如此方便快捷,至于中间的过程和方法不做明细的介绍了,时间有限请谅解。IF函数的循环使用如下:将该公式填入
=IF(IF(IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0))=0,IF(IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))=0,IF(IF(E3>50,2,0)=0,IF(E3<=50,1,0),IF(E3>50,2,0)),IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))),IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0)))<=5,IF(IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0))=0,IF(IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))=0,IF(IF(E3>50,2,0)=0,IF(E3<=50,1,0),IF(E3>50,2,0)),IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))),IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0)))*5,40)
为了方便大家能看懂,则可以拆分为如下的公式:拆分公式的步骤按照函数的每一个IF为节点,从最外层到最内层分别分解就可以明明得到如下的函数公式;
G=IF(E3<=50,1,0)
H=IF(E3>50,2,0)
I=IF(H3=0,G3,H3)
J=IF(E3>100,3,0)
K=IF(E3>150,4,0)
L=IF(E3>150,4,0)
M=IF(E3>250,5,0)
N=IF(E3>300,6,0)
O=IF(N3=0,M3,N3)
PQ=IF(E3>150,4,0)
R=IF(N3=0,M3,N3)
S=IF(Q3<=5,Q3*5,40)
然后将函数进行简化整合即可以得到上述的函数公式。这里就不多说了。
按照上述公司带入表中返回值如下:
http://s9/mw690/a8d5aec2gcd6c58d26628&690
http://s16/mw690/a8d5aec2gcd6c58ca3cbf&690
上述数据不管有多少行距可以有效。
由于时间关系就简单介绍到这里,有关IF函数的循环使用和多种函数的套用请见博客文章:
http://yuwangmuzi.blog.163.com/和http://blog.sina.com.cn/yuwangmuzi
经验有的东西是只能意会不能言传,欢迎大家出来交流经验,互相学习。但是永恒的一个道理就是时间出真知。
文章系原创。转载请注明出处。
肖有权
2012年11月1日工作之余