引用问题 我在excel中想实现这么一个功能,如单元格D12有一个数据是4,现在我想引用A4的数据,但4是由D12提供的,即如何实现A4=A(D12)。也就是,在Excel中,A7单元,能否实现把后面的数字用算式来代替,如A(3+4),或者是单元格的嵌套,A(D12),恳请高手解答。 解答:①=indirect("a"&d12) ②我的想法:借一个单元格如B4用,键入="A"&D12 在需引用的单元格键入=INDIRECT(B4) 即可,第二个:C4是3,C5是4 B4="A“&C4+C5 ,同①。 如何在一列列出工作薄中的所有表(表名无规律) 以下宏将在a列传回所有工作表名称。(很实用) Sub Maco1() For i = 1 To Sheets.Count Cells(i, 1) = Sheets(i).Name Next End Sub 18位身份证号码输入的几种解决方法 相信在EXCEL这个软件中如何输入15位或18位身份证号码的问题已经困挠了许多人,因为在EXCEL中,输入超过11位数字时,会自动转为科学计数的方式,比如身份证号是:123456789012345,输入后就变成了:1.23457E+14,要解决的方法有非常非常......多种哦,呵呵,现在为大家说几种比较简单快速的方法: 1、在A1单元输入号码时,在前面先输入’号,就是:’123456789012345,这样单元格会默认为该单元为文本方式,会完整显示出15个号码来,而不会显示那令人讨厌的科学计数方式来了。 2、如果已经输入了大量的号码,全部以科学计数显示的话,而又懒的按照上面的方法一个一个的重新输入的话,也有这个好方法哦,比如已在单元A1:A100输入了号码,按以下步骤做:》选择单元A1:A100》单击鼠标右键,设置单元格式》选择自定义,在‘类型’中输入‘0’即可,轻松搞定,呵呵!! 3、还有一种用函数来解决的方法:在A1:A100已经输入大量的号码时,在B1单元中输入:=trim(' 'a1),注意两个’之间是空格,这个公式的意思:先在A1单元15位号码前加个空格符号,然后用trim这个函数把空格符号去掉。输完后,B1单元也是显示出完整的15位数字了。 用countif算出数值大小在50~60之间的单元格个数 解答:①你可以综合一下呀! =countif(a1:a9,">=50")-countif(a1:a9,">60") ②{=SUM((a1:a9<60)*(a1:a9>50))} ③为什么{=SUM((a1:a9<60)*(a1:a9>50))}可以求出符合条件的个数,按理后面应再加一待求和区域如"B1:B9"等等,不知数组计算的内部机制是怎样的,不知谁能给个解释,谢谢!! ④这个数组公式是这样运算的: a1:a9区域的数值分别与60比较。假如a1:a9的数依次为15,25,35,45,55,65,75,85,95.那么(a1:a9<60)返回{true,true,true,true,true,false,false,false,false},同理(a1:a9>50)返回{false,false,false,false,true,true,true,true,true}。然后(a1:a9<60)*(a1:a9>50)则返回{false,false,false,false,true,false,false,false,false}。因为*表示and的意思。只有当and的对象都为真时结果才为真。。excel里用1表示true;0表示 false。有时需要将true或false转换成数值,可以*1或+0 几个工作表生成一个打印文件一次打印 解答:先按 Ctrl键 + 其它要一起打印的工作表就会成为一个群组,打印的页数可延续到下一个Sheet 自动计算应收款滞纳金 要求在给定的应收日期、滞纳金率、当前日期(自动取)的基础上自动计算出应收滞纳金。 解答:=(DATEDIF(应收日期,NOW(),"d"))*滞纳金率(每天)*应收金额 SUM函数难题 A B 234 230 12 10 13 如何用函数计算出下面几个数据 1。A和B都有数据且A>B的个数 2。A栏在相应的B栏有数据的情况下的数据总和,例如A1对应B1有数据,A3对应B3有数据,则求A1+A3的和。希望都能用一个函数求出所要的结果。谢谢 解答:=SUM(($A$1:$A$10<>"")*($B$1:$B$10<>"")*($A$1:$A$10>$B$1:$B$10)) =SUM(($A$1:$A$10<>"")*($B$1:$B$10<>"")*($A$1:$A$10>$B$1:$B$10)*($A$1:$A$10+$B$1:$B$10)) 记得输入公式后要按ctrl+shift+enter 工作表中的小写字母都变成大写 解答:请运行以下程序:(测试通过) Sub ConvertToUpperCase() Dim Rng As Range Worksheets("Sheet1").UsedRange.Select For Each Rng In Selection.Cells If Rng.HasFormula = False Then Rng.value = UCase(Rng.value) End If Next Rng End Sub 用COUNTIF计算整个B列中含有“F”这个字符的单元格的个数 c1=COUNTIF(b1:b130,b129),(b129单元格内的字符是“F”),问题是随后在向表格中添加新行131、132、133.....之后,c1单元格中公式统计的结果还是1-129行的,怎么才能让c1中实时显示添加新数据后的统计结果? 解答:c1=COUNTIF(b:b,b129) 自动记录出车情况 现有一表格,每天记录50辆不同车号的车辆的“出车里程”和“回库里程”,需要打印一清单,自动统计每辆在库车辆的当前里程,请问该如何做 (结果放在其它sheet中,为方便显示这里和数据放在一个sheet中了 ) ? 解答:可以用数组公式: 假设"此处数据不断增加"所在工作表的名字为"SHEET1". 在"此处需要更新"所指的单元格内输入公式=MAX(IF(OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A$2:$A$65536))=A2,OFFSET(Sheet1!$B$2,,,COUNTA(Sheet1!$B$2:$B$65536))))",按CTRL+SHIFT+ENTER 结束,之后向下填充公式. 整点记录坐标值 我在监测一个点的电压值,每天正点记录一次,这样每天就产生了24个值,现要进行一个月,共产生了720个值。根据这720个值,用EXCEL作一个图表,横坐标是时间,单位是----天,纵坐标是测量值。难点:横坐标每个刻度为一天,如设分类轴刻度线之间的分类数为24 的话,横坐标每个刻度下显示为:1 25 49,而其单位为天,那不就成了第1天过了,就到了第25天?如设分类轴刻度线之间的分类数为1的话,可是我每天有24个值? 解答:我试验了一下,发现还是能够解决的。横坐标为时间,每天24小时,一个月30天,共计720个数据,纵坐标为数值,这样做出来的表格非常长,数据这样排,第一列(0小时,1小时,......23小时,0小时,1小时,.....23小时,)这样总共重复30天,第二列为每天24个数据,做折线图(第四种),先按照向导一步步做下去,删除第一个系列,就可以了。做出来的图像横坐标(分类轴)要调整,刻度调整为标签间的分类数为1,就可以达到目的!剩下可以手工在每天的开头处加上日期(可以用文本框),不知道这样解决可以吗? 请问如何把在Excel中绘制的曲线图表另存为jpg或gif格式的图片 解答:选定图表部分,复制它,打开可以编辑jpg或gif格式的软件,然后粘贴保存为jpg或gif格式文件即可。 round函数 解答:不要用工具条上的显示小数位数来控制小数位数,它只是显示这几位,实际还是按原来的数计算。如:1.2345,你显示两位,为1.23,而实际他是按1.2345去计算的,要用round函数,round(数据,2)即可。如果怕繁的话,可在选项里设置按显示计算,呵呵,试试看。 解答2:我是做财务工作的,这一点有较深的体会 就是无论用什么函数都要在最外面加上 round(),不然的话因为那一两分钱定会被领导狠狠说一顿 再有两条经验 1、如果准备作大一些的表格,尽量不要使用 “合并单元格” 以免以后使用函数麻烦; 2、要分清你作的表格主要是使用来存储数据,还是用来打印输出,如果想两者兼顾,小一点的表格还可以,大了就不好办了。 工作表引用 比如说现在Sheet2!a1引用Sheet1!a1,Sheet3!a1引用Sheet2!a1,那么有什么办法可以表示Sheet(n)!a1引用Sheet(n-1)!a1。我是Execl方面的菜鸟,希望各位大虾能给我解决的方法或者思路也行啊。 解答1:用VBA.Sheets(n).Cells(a, 1) =Sheets(n-1).Cells(a, 1) 又问:ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1],_______!R[-1]C)" .在_____处,我应该怎么填,才可以得到上一张表格? 答:在空格处写上: sheets(activesheet.index-1) .注意如果当前工作表是第一张(即 activesheet.index-1=0)时会出错。 或:=INDIRECT("sheet"&A1&"!$A$1") 汇总 有这样一个问题,学校里共有24个科目(每个科目都有其代码,每门科目都有它相应的教材费),但学生最多只能选其中4门科目,那么我在一个表里每个记录中存储学生所选的4门科目的代码,并要在该表里汇总4门科目的总教材费,怎么汇总。(各门科目代码及对应的教材费存在另一个表里)。 解答:你可以这样: 1,表2: 序号 科目 教材费 /1 语文 120 /2 数学 100 /3 英语 150 /4 政治 70 /5 历史 110 /6 地理 90 /7 物理 250 /8 化学 180 2,表1: 姓名 科目1 科目2 科目3 科目4 教材费合计/赵 1 2 3 4 440* /钱 2 3 4 5 430 /孙 3 4 5 6 420 /李 4 5 6 7 520 /张 5 6 7 8 630 .其中教材费单元格(打*号处,即F2)公式如下: =VLOOKUP(B2,Sheet2!A:C,3)+VLOOKUP(C2,Sheet2!A:C,3)+VLOOKUP(D2,Sheet2!A:C,3)+VLOOKUP(E2,Sheet2!A:C,3) 。其下单元格复制公式。 在EXCEL2000中可否实现票面分解 解答:我在excel 中试验了一下,发现票面分解还是比较简单的,下面是我的做法: A B C D 1 票面金额 655389.26 /2 面值 张数 余额 /3 100 6553(公式为:int(b1/a3) 89.26(公式为:b1-c3*a3) /4 50 1(公式为:int(d3/a4) 39.26(公式为:D3-A4*C4) /5 20 1 19.26 /6 10 1 9.26 /7 5 1 4.26 /8 2 2 0.26 /9 1 0 0.26 /10 0.5 0 0.26 /11 0.2 1 0.06 /12 0.1 0 0.06 /0.05 1 0.01 /0.02 0 0.01 /0.01 1 0.00 /第五行以下的数据就不需要一一输入了,选中C列和D列(C4:D15),按ctrl+D,结果就出来了。 年龄及奖学金问题 打开Excel工作表,建立如下表格所示的表格: A B C D E F G H I J K L M 姓名 性别 生日 年龄 年级 语文 数学 外语 政治 平均 工资 奖励 总额 王明 男 2 89 98 92 87 1 设置生日为 11-28-1998 的形式,并根据生日计算出学生的年龄。 /2 对平均分>=90分,80<=平均分<90,60<=平均分<80的奖励金额数放在单元格N5..N7中,请利用公式计算出每位同学赢得的奖金。 /3 1年级学生工资为80元,2年级工资为100元,3年级工资为110元,请计算出每位同学的工资数,并根据工资数和奖励数计算每位同学的工资总额。 解答:1. 计算年龄:=INT(((YEAR(NOW())-YEAR(C2))*12+MONTH(NOW())-MONTH(C2))/12) (注意学生生日在C 列) 2. 计算工资: =IF(LEN(E2)>0,CHOOSE(E2,80,100,110),"") (注意学生年级在E列) 3. 奖励: =IF(J2>=90,$N$5,IF(J2>=80,$N$6,IF(J2>=60,$N$7,""))) (平均分在J列) 隔行求和问题 若有20列(只有一行),需没间隔3列求和,该公式如何做?前面行跳跃求和的公式不管用。 解答:假设a1至t1为数据(共有20列),在任意单元格中输入公式:=SUM(IF(MOD(TRANSPOSE(ROW(1:20)),3)=0,(a1:t1)) /按ctrl+shift+enter结束即可求出每隔三行之和。 在EXCEL里取数值的一部分用什么函数 打比方说有一个数字123456,我只想取它的后三位,也就是说只需要456,应该用什么函数。 解答:假设A1的值为123456, 用=RIGHT(a1,3)可以取其后三位./ 你如果想取其中的几位,不妨试试mid函数。 用什么函数可以插入字符 00020304T0239 0400020304T0239 /00020404T0211 0400020404T0211 /00020604T0199 0400020604T0199 /00020704T0216 0400020704T0216 /00021304T0241 0400021304T0241 /00021404T0222 0400021404T0222 /00021504T0222 0400021504T0222 /00021704T0139 0400021704T0139 /就像上表一样,怎样用第一列的数据形成第二列的数据,即在特定位置加上几个相同字符串? 解答: b1="04"& a1 问:哪如果倒过来呢? 答:用公式A1=MID(B1,3,13)或A1=SUBSTITUTE(B1,"04","",1) 将文件保存为以某一单元格中的值为文件名的宏怎么写 解答:假设你要以Sheet1的A1单元格中的值为文件名保存,则应用命令: ActiveWorkbook.SaveCopyAs Str(Range("Sheet1!A1")) + ".xls" A1是文本串的话,使用这条命令: ActiveWorkbook.SaveAs Range("A1") & ".xls" 。当然,如果你的A1是路径,F1是文件名的话,可以这样写: ActiveWorkbook.SaveAs Range ("A1") & Range("F1") & ".xls" 求余数的函数 比如:A1=28,A2=(A1÷6)的余数=4,请问这个公式怎么写? 解答:=MOD(28,6) 评委评分 解答:用两个函数可解决:rank(排高低)average(求平均)。也可以用:{=(SUM($B$1:$B$10)-SUM(LARGE($B$1:$B$10,ROW($A$1:$A$2)))-SUM(SMALL($B$1:$B$10,ROW($A$1:$A$2))))/(COUNT($B$1:$B$10)-4)}(可以解决有多个最高和最低分的问题)。 数据校对 已知:A2=SUM(A3:A20),B2=SUN(B3:B20),C2=SUM(C3:C20),D2=SUM(d3:d20),E2=SUM(E3:E20)、又知A2=B2+C2=D2+E2 。需要解决的问题:当B2+C2或者D2+E2不等于A2时,系统自动提示错误,请各位高手给予指点,是否一定要通过宏才可以解决,有没有更简单的办法? 解答:=IF(AND(B2+C2=SUM(A3:A20),D2+E2=SUM(A3:A20)),SUM(A3:A20)," : (") 如何在一个单元格中自动输入在另外一个单元格中输入的文字 解答:a2中输入a1的文字,则a2=indirect("a1") 在表格中查找我需要的东西并把该行所有的数据反映到另外的表格中去 解答:比如找表A中B列数值等于5的数。在表B中的A1单元输入:=VLOOKUP(5,A!B1:B4,1) 在EXCEL表里建立唯一索引在该列输入重复的数值后自动提示输入错误 解答:1、选定你要限制输入的列(假设是A2:A20),选菜单的“数据”-“有效性”; 2、在许可条件中选定“自定义”,在公式一拦中,输入你要求的限制, 例如:“=COUNTIF($A$2:$A$20,A2)=1 ”。 3、你还可以在“输入信息”和“出错信息”输入一些提示信息。 不过,你一定要注意!这个功能只能在你从键盘上键入数据时有效!拷贝和粘贴数据的操作是无效的。 发票小写金额填充 我输入123456.52它自动给拆成¥1 2 3 4 5 6 5 2 的形式并且随我输入的长度改变而改变? 解答:我所知函数不多,我是这样做的,如有更方便的方法,请指点 例如: 在A1输入小写金额,则: 千万:B1=IF(A1>=10000000,MID(RIGHTB(A1*100,10),1,1),IF(A1>=1000000,"¥",0)) 百万:C1=IF(A1>=1000000,MID(RIGHTB(A1*100,9),1,1),IF(A1>=100000,"¥",0)) 十万:D1=IF(A1>=100000,MID(RIGHTB(A1*100,8),1,1),IF(A1>=10000,"¥",0)) 万:E1=IF(A1>=10000,MID(RIGHTB(A1*100,7),1,1),IF(A1>=1000,"¥",0)) 千:F1=IF(A1>=1000,MID(RIGHTB(A1*100,6),1,1),IF(A1>=100,"¥",0)) 百:G1=IF(A1>=100,MID(RIGHTB(A1*100,5),1,1),IF(A1>=10,"¥",0)) 十:H1=IF(A1>=10,MID(RIGHTB(A1*100,4),1,1),IF(A1>=1,"¥",0)) 元:I1=IF(A1>=1,MID(RIGHTB(A1*100,3),1,1),IF(A1>=0.1,"¥",0)) 角:J1=IF(A1>=0.1,MID(RIGHTB(A1*100,2),1,1),IF(A1>=0.01,"¥",0)) 分:K1=IF(A1>=0.01,RIGHTB(A1*100,1),0) (编者注:公式中最后一个0应改为"") 排列问题 已知1,2,3,4共4个数字符号构成的4位数的全排列有256个,如:1234,2341,3245等等,现在我需要将这256个数字全部列出,如果用手写笔算的话既麻烦又容易出错,不知可否用Excel来解决这个问题? 解答:在单元格输入公式“=1111+1000*INT((ROW()-1)/64)+100*MOD(INT((ROW()-1)/16),4)+10*MOD(INT((ROW()-1)/4),4)+MOD(ROW()-1,4)”拖放到A256。 在条件语句中如何实现符合某个时期的条件的记录进行统计 比如有1-12月份的记录单,需要实现对每个月里些数据的统计汇总/(格式如何?) 解答:以下公式,A列为日期列,B列为数据,要求计算1月份的累计: =SUM(IF(MONTH(A:A)=1,B:B,0)) 此为数组公式,在输完公式后,不要ENTER,而要CTRL+SHIFT+ENTER. 行改列(不是转置问题) 1. 原内容为行(每行5列内容共几千行): 列1 列2 列3 列4 列5 行1 1 2 3 4 5 /行2 1 2 3 4 5 /行3 1 2 3 4 5 /以下类同… /… 2. 改为行排列(每12行5列内容共12组,排为一行) 列1 列2 列3 列4 列5 列6 列7 列8 列9 列10 ……(60列) 原1-12行 1 2 3 4 5 1 2 3 4 5 ……(60列) /原13-24行 1 2 3 4 5 1 2 3 4 5 ……(60列) /原25-36行 1 2 3 4 5 1 2 3 4 5 ……(60列) /以下类推 … 本人不会编写宏,让您见笑曾费劲手工移动录制了一个取2400行(每行5列内容)改列的宏。因原有工作表行不断增加,经常需要行改列作其它用途,录制的宏不能满足需要。烦请大家帮助写一自动循环取12行5列内容排列为一行的宏。 规律: 1. 1-12行1-5列内容排在第1行(第一行1-5列、第二行1-5列、类推,完成为60列) 2. 13-24行1-5列内容排在第2行(第13行1-5列、第14行1-5列、类推) 3. 25-36行1-5列内容排在第3行(第25行1-5列、第26行1-5列、类推) 4. 以下类推 … 解答:Sub 转换() Dim numcol As Integer Dim numrow As Long Dim i As Long Dim x As Integer Dim numperrow As Integer numperrow = InputBox("请输入每行要填的数据行的数目:") Range("数据").Select numrow = Selection.Rows.Count '数据区的行数 numcol = Selection.Columns.Count '数据区的列数 x = numperrow * numcol Range("a1").Select For i = 1 To numrow '以数据的每一行为单位进行剪切 Range("数据").Rows(i).Cut ActiveSheet.Paste Selection.Offset(, numcol).Select If (i Mod numperrow) Then '判断是否要换行 Else: Selection.Offset(1, -x).Select End If Next i End Sub '本程序需要把要变换的数据命名为"数据"(数据区的列数可以任意,不一定是5)方法:选中该区域,在名称框内输入"数据"即可,然后按程序要求输入每行要填的数据行的数目(如本例中的12) 如何给自动筛选中的自定义指定快捷键 解答:Sub 自动筛选() On Error GoTo xx Selection.AutoFilter = True xx: End Sub 汇总问题 本人有以下一个问题需要解决,请诸位大虾指点迷津。 如下表: A B C 1 50 采购 (采购汇总) / 2 60 工程 (工程汇总) / 3 80 工资 (工资汇总) / 4 100 税 (税汇总) / 5 70 采购 / 6 50 工资 / 7 60 工程 /. . . /请问:C1、C2、C3、C4中的公式如何设置? 解答:方法1:如下表: A B C 1 50 采购 =countif(a1:a7,"采购") / 2 60 工程 =countif(a1:a7,"工程") / 3 80 工资 =countif(a1:a7,"工资") / 4 100 税 =countif(a1:a7,"税") / 5 70 采购 / 6 50 工资 / 7 60 工程 / . . . 方法2:用如下方法才对: A B C 1 50 采购 =SUMIF(B1:B7,B1,A1:A7) 2 60 工程 =SUMIF(B1:B7,B2,A1:A7) / 3 80 工资 =SUMIF(B1:B7,B3,A1:A7) / 4 100 税 =SUMIF(B1:B7,B4,A1:A7) / 5 70 采购 / 6 50 工资 / 7 60 工程 方法3:由于B栏属于数据表的一部分,可能会随时改变,故此最好把采购等项目名称抄到另外一个地方(C栏)。 A B C D 1 50 采购 采购 =SUMIF(B$1:B$7,C1,A$1:A$7) / 2 60 工程 工程 =SUMIF(B$1:B$7,C2,A$1:A$7) / 3 80 工资 工资 =SUMIF(B$1:B$7,C3,A$1:A$7) / 4 100 税 税 =SUMIF(B$1:B$7,C4,A$1:A$7) / 5 70 采购 / 6 50 工资 / 7 60 工程 /还有,记着要适当地使用绝对参照地址 (Absolute referencing)。 方法4: A B C D 1 50 采购 采购 =SUMIF(B:B,C1,A:A) / 2 60 工程 工程 =SUMIF(B:B,C2,A:A) / 3 80 工资 工资 =SUMIF(B:B,C3,A:A) / 4 100 税 税 =SUMIF(B:B,C4,A1:A) / 5 70 采购 / 6 50 工资 / 7 60 工 统计包含某个字符的个数 我想编的公式是: a/[84 - (b×4)] 。其中a是一个数值,小于或等于84;b是包含字符C的单元格的个数;C是一个符号。这个公式的关键是要统计出包含字符C的单元格的个数。 解答:方法1:=a/(84-countif(b,"=c")*4) 问题:我试了一下,不能运行,我想是因为没有指定出现“c”的单元格的范围。比如说“c”在D2—D30中随机出现,在上述公式中要先统计出出现“c”的单元格的个数。这个公式如何做? 解答: =a/(84-COUNTIF(D3:D30,"c")*4) 如何用if函数判断,如果a1单元格大于0,b1单元格为0是错误,为非0是正确 解答:1:if(and(a<=0,b=0),"错误","正确") 2:=if(a1>0,if(b1=0,"错误","正确"),"条件一不满足") 我改进以下一个验证先进先出法公式 =IF(B3至B7为输入数量,C3至C7为输入单价,C1为输入结余数量,E1为输出平均单价,即上面公式 解答:公式太复杂,而且受限制。 把A列利用起来,a3=SUM(B3:$B$7),拖至7行(若为X行,则=SUM(B3:$B$X,下拖),A列数据为先进先出的累计数量(待Match的结存数量),=MATCH(C1,A3:A7,-1)找到结存批次。然后计算结存平均单价及发出平均单价。 有无简结一点的公式求如:a1*b1+a2*b2+b3*b3...的和 解答:在B4中输入公式"=SUM(A1:A3*B1:B3)",按CTRL+SHIFT+ENTER结束. 或:=SUMPRODUCT(A1:A10,B1:B10) 工作中须将表格中大量的日期同时转换为中英文的星期几 解答:转成英文: =TEXT(WEEKDAY(A1),"dddd") 转成中文: =TEXT(WEEKDAY(A1),"aaaa") 我想查询表格中的某一列编号中有221这一编号时,引用其同行某列的数值 我现用 VLOOKUP(221,A1:E33,5,0)这一公式引用其同行第5列的数值时可以使用,但当查询到没有 221 时,想使其返回值为“0”不知如何处理。 解答:=if(iserror(vlookup())=true,0,vlookup()) 如何给自定义函数写上帮助信信息和参数说明 解答:目前自定义函数是不能做到完全象内置函数一样的。但是可以给它添加一段说明。 打开带有自定义函数的工作簿-〉按快捷键 Alt+F8—〉在光标处输入函数名字—〉单击“选项”—〉输入说明文字。 如何在EXCEL中统计一个数在哪一行出现 解答:{=IF(ISERROR(SMALL(IF(R1C1:R16C1=R1C2,ROW(R1C1:R16C1),""),ROW()-1)),"",SMALL(IF(R1C1:R16C1=R1C2,ROW(R1C1:R16C1),""),ROW()-1))} 在SHEET51的A1做公式加总SHEET1:SHEET50的A1怎么做啊 解答:=SUM(Sheet1:Sheet50!A1) 工作表间的数据输入 我想在sheet1中输入数据,例如我先在A1中输入1,确定是输入第一个单位的数据,然后从A2开始是第一个单位的数据。输入完成后,在SHEET2中的第一个单位数据就显示出来了,我的问题是,我想用SHEET1表再输入第二个单位的数据,但是这时SHEET2中第一个单位的数据没有了,显示是第二个单位的数据,如何才能保存第一个单位的数据,又能用SHEET1再输入第二个、第三个单位的数据? 解答:=IF(户汇总!$B$3<>1,"",户汇总!B5) 请问如何用公式达到我想要的结果 A列 B列 C列 1 a 2 a 3 a 1 b 4 b 我想当B2=B3,而且A2=1时,C2的值为OK,请问该如何写这个公式? 解答:=IF(AND(B2=B3,A2=1),"OK","") 一个页面在打印一次后是否能在上面的某一单元格数值上加1 解答:可使用 Workbook 的 Before_Print 事件. 按 [Alt + F11] 进入 VB Editor, 左侧会有一个 [ThisWorkbook], (如果没有, 按 [Ctrl+R] 叫出) 在 [ThisWorkbook] 快按两下, 贴上程序 -- Private Sub Workbook_BeforePrint(Cancel As Boolean) [A1] = [A1] + 1 End Sub 不用VBA,用EXCEL语句的IF函数,如何使用其条件关系 假如,现在A1,A2,A3;B1,B2,B3 只要B1 不为空B1<>“”,那么B2=A2 B3=A3 如何使用其IF语句来实现?? 解答:B2=IF($B$1<>"",$A2) B3=IF($B$1<>"",$A3) 求和问题 对于工作表中的数据库,随便举一例: 编 号 数 量1 数 量2 01 180 80 02 190 90 01 170 80 01 160 80 我如何计算(数量1-数量2)值的总和.并且必须满足编号相同时, 只能减一次数量2. 即要计算成: (180+170+160-80)+(190-90). 注: 编号相同时,数量2的值一定相同. 解答:设表格在A1:C5中 =SUMIF(A2:A5)-INDEX(C1:C5,MATCH("01",A1:A5,0))-INDEX(C1:C5,MATCH("02",A1:A5,0)) 排名问题 在A1:F6区域有下面一个表格: 班级 姓名 政治 语文 数学 总分 1 小东 90 90 90 270 /2 明明 95 92 90 277 /3 小英 96 89 91 276 /4 小刘 95 90 92 277/5 小红 95 91 92 278 /要在K1:K3的单元格中分别显示总分最高的同学的班级、姓名、总分,在L1:L3的单元格中分别显示总分第二的同学的班级、姓名、总分,在M1:M3的单元格中分别显示总分第三的同学的班级、姓名、总分 ,注意期中277分的有两人,不要出现第二名与第三名都是"明明"的结果. 解答:定义A2:A6区域为班级 ;定义B2:B6区域为姓名;定义F2:F6区域为总分 K1={INDEX(班级,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))} L1={INDEX(姓名,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))} M1={INDEX(总分,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))} 注:只要向下复制,便可得到1~6名的情况了。该公式可以无限排列。另注:这是数组公式,不需要输入“{}”,在输完公式后,请按ctrl+shift+enter,应将后面的100改成100000,比较好。 统计满足条件的数据并生成新的数据列 A B C 427 8 427/612 8 612 /924 8 924 /22 16 409 /94 16 /620 16 /955 16 /409 8 /请问:假定有如上两列数据A和B,现在想要统计满足条件B=8的 ,并且在C列自动生成数据,我不懂公式怎么写,我知道筛选能够做到,但是由于数据量比较大,想做一个模板,免去一些重复劳动。 解答:=IF(ROW($A1)>COUNTIF($B$1:$B$8,8),"",INDEX($A$1:$A$8,MATCH(SMALL(IF($B$1:$B$8=8,0,1)+ROW($B$1:$B$8)/100000,ROW ($A1)),IF($B$1:$B$8=8,0,1)+ROW($B$1:$B$8)/100000,0))) 争议:B栏有100个选取条件,公式要修改100次,有甚么灵活性?给字段名称 ,插入头两列 ,B1=SUBTOTAL(9,B4:B65536)。解决掉所有问题 。控件找自动筛选要 辩解:不需要修改公式,直接复制就行了。如果是100个,开始时就将范围修改好就行了。 工作表间的查找与复制 我的工作是在一个2000多个员工的纪录(包括各种资料,如身份证号,工作记录等)的excel工作表A中查找另一份200多个员工名单,把员工在A表中的各项纪录复制到另一个表上去,我听说用vba可以很容易的简化大量的复制工作,不知哪位高手可以指点指点?? 解答:如下表sheet1的内容 a b c 姓名 工号 部门 张三 100 mm /李四 101 mm2 /....... 表sheet2 a b c 姓名 部门 /李四 /。。。 要在sheet2表中将sheet1表的相同人员资料复制过来可在b表 单元格b2中输入 ”=vlookup(a2,sheet1!a1:gg2000,3,false) 最好将sheet1的数据区先定义一下 比较运算符为何要用引号 (1) 何解在公式内,运用 "比较运算符号" 时,要把数据连同比较运算符号用 "双引号" 括住,而其它算术符号就不需要? 例如:=Countif(A1:A30,">=10")是可以接受,但不加双引号时,便遭拒绝。 (2) 又请问:如上例,要比较的数值是要参照某单元格时,公式应怎样做? 解答:这是CountIF()的规定。第二个参数为字符串,必须用双引号扩起来,除非条件是等于一个数值。 比如:=COUNTIF(A1:A30,">=4") =COUNTIF(A1:A30,"condition") =COUNTIF(A1:A30,220) 用引用作参数(假设B1值为4): =COUNTIF(A1:A30,">=" & B1) EXCEL中如何修改批注的字体和颜色 解答:视图--批注 然后在批注上单击右键 选择设置批注格式 如何以进阶筛选命令筛选出“序号”为单数、双数、或者是任意间距值的records 序号 姓名 性别 年龄 1 李1 男 30 /2 李2 女 25 /3 李3 女 22/4 李4 男 31 /:: : : /99 李99 男 28 解答:在“序列”与“姓名”之间插入一个空列,在其第一格输入“条件”。在“条件”下面输入公式“=IF(MOD(A5,2)=1,"单数","双数")”,用“自动筛选”。 n2=sum(b2到m2) 、n3=sum(b3到m3) 、有没有办法让n那一列可以自动填充 就是说每增加一行,就会自动计算n那一列的值 、多谢! 解答:1:我有个笨方法,须用VBA,不知和你意否。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column < 14 And Cells(Target.Row, 14).Formula = "" Then Cells(Target.Row, 14).Formula = "=SUM(RC[-12]:RC[-1])" End Sub 2:假设需要被SUM的数据存放在B列(第一个数据存放在单元格B2),将以下公式COPY到你希望显示结果的单元格中: =IF(LEN(B2)>0,SUM(B$2:INDEX(B:B, ROW(), 1)), "") 切记如果B列中有空单元格隔开了需要计算的数据, 必须以零填充该单元格. 3:这个问题不用想得很复杂,就是要把n2单元格输入公式后,拖曳向下复制公式。 也许是我想得太简单了。 在工作表里有连续10行数据, 现在要每行间格2行, 要如何做 解答:1:如sheet1!$A$1:$D$10中有连续10行资料,在sheet2中把sheet1中的数据每行间隔2行 sheet2!A1中公式可用 =IF(ROW()=1,Sheet1!A1,IF(MOD(ROW(),3)=1,INDEX(Sheet1!$A$1:$D$10,INT((ROW()-1)/2)+1,COLUMN()),"")) 然后填充公式(注意公式在SHEET2中的填充范围,超过范围会出错!) 2:小修改 =IF(MOD(ROW(),3)=1,INDEX(Sheet1!$A$1:$Z$500,INT(ROW()/3)+1,COLUMN()),"") 当点到某单元格时单元格会出现一个下拉的列框,可以选取其中的数据 解答:[数据]-[有效性]-[序列] 又问:好像选取数据只能在本页面,有无高招选取另外页面的数据源,甚至是另外工作薄的? 解答:先在“插入-》名称”中定义好其它页面上需要引用的数据源的名称(AA)。然后 [数据]-[有效性]-[序列] ,在“数据源”栏输入“=AA”。 或:若改其它活页薄要如何修改下列式子?( 假设活页薄名称为book1) =Sheet1!$A$2:$A$14(book2) 查找与引用 有一个表格: 承兑行 天数 实际天数 深圳工行 98 101 广州交行 105 108 鞍山工行 100 100 如果“承兑行”一栏含有鞍山字样,则“实际天数”等于“天数”;如果“承兑行”一栏不含有鞍山字样,则“实际天数”等于“天数”加上3,请问:如何设置? 解答:这个问题的重点在于如何判断是否含有“鞍山”字样。 如果“鞍山”在字符串中的位置是固定的,则很容易用MID函数找到并进行判断; 如果不是,则需要用FIND或Search函数来找到再判断。 或:如果A列中是承兑行,B列是天数,C是.... 可以试用一下以下的公式: =IF(ISERROR(FIND("鞍山",A2)),B2+3,B2) 如果D2>20那E2就显示$200、如果D2>30那E2就显示$300依此类推 解答:=INT(D2/10)*100 ,当然,你的单元格格式设置成$格式就可以了。否则用,="$"&INT(D2/10)*100 则该单元格成字符型 。当然,你也可以用IF函数,但它有7层的限制。if (D2>30, "300",IF(D2>20,"200")) 在两个工作表之间查找相同的内容并复制到新表 有两张工作表,内容都是电话号码、用户名称,怎样对两张工作表进行比较?(把第一张工作表和第二张工作表中电话号码相同的项目复制到新工作表中或加上标记) 解答:先备份工作簿。 假设SHEET1、SHEET2 两张表的结构相同,A 列为用户名,数据由第二行开始。新建SHEET3 并在其A2 单元格中输入 =IF(ISNA(MATCH(Sheet2!$A2,Sheet1!$A:$A,0))," DELET THIS ROW ",Sheet2!A2) 并向下、向右填充。 完成后SHEET3中多了SHEET2 和SHEET1 共有的用户名,以及由"DELET THIS ROW"填充的数据行。剩下的就简单了! 统计偶数单元格合计数值 解答:统计F4到F62的偶数单元格合计数值。公式一{=SUM(IF(MOD(ROW(F4:F62),2)=0,F4:F62))} 公式二 (要有安装'分析工具箱'){=SUM(IF(ISEVEN(ROW(F4:F62)),F4:F62))} 按表1中A列的编号提取表1中的相应数据并自动录入到表2中的对应的相关列 有两个工作表,工作表1中A列为编号,其它列为相关数据,若在工作表2中的编号列单元格中输入编号时,如何才能按表1中A列的编号提取表1中的相应数据,自动录入到表2中的对应的相关列。 解答:利用vlookup寒暑,该函数的用处就是把一个数据区域当成数据库,并利用条件检索相关纪录。 有了这点认识就非常简便了!在表2的单元格中输入下面的公式: =vlookup(编号,表1!有关数据区域,第n列,false) 解释: 1、编号——不需要输入,主要是编号的相对引用。例如: 编号在b2,公式在c2,则编号为:b2 2、有关数据区域——必须是绝对引用,也就是数据区的行列要用$符号修饰。例如:从a1到h50是数据,则应该写为:$a$1:$h$50 3、第n列——也就是你准备返回第几列的值。例如:你输入编号后,要得到姓名,而姓名在数据区域的第5列,n就是5。 4、false——此处取值有两种,一是true,一是false。两者的区别是 true为相似匹配,false为精确匹配。 用EXCEL做统计 如:A1,B1单元格是时间类型,C1是数字类型,我要计算费用用(B1-A1)*C1得到的数据还是时间类型、怎么办 ?我希望把时间类型变为整数类型,如0:50(50分钟)*3(元/H)=2.5元 解答:设A1为3:30,B1为4:30,C1为3,D1为下列输入的函数: =HOUR(B1)*60+MINUTE(B1)-(HOUR(A1)*60+MINUTE(A1)) 。D1结果等于60(分钟) 单元格是否有注释 我在用VBA写EXCEL的注释时,需要等程序判断该单元格是否有注释,如果有就读出来,如果没有就添加,但我一直没找到用什么办法来知道单元格是否有注释,请各位大虾指点!!! 解答: Sub 批注() For i = 1 To 8 On Error Resume Next a = Sheets(1).Cells(i, 1).Comment.Text If Err.Number = 91 Then Sheets(1).Cells(i, 2) = "左侧单元格无批注" Sheets(1).Cells(i, 1).AddComment Text:="请输入批注内容" Else Sheets(1).Cells(i, 2) = "左侧单元格批注" & a End If Next i End Sub 根据A1的内容,决定A2的数值是来自sheet1,sheet2还是sheet3. 我用了公式却不行.用 Range("A2").value=Range("Range("A3").value").value 也不行.(A3有公式: ="sheet"&A3&"!E1")请各位帮忙了. 解答:if(a1=1,sheet1!a1,if(a1=2,sheet2!a1,if(a1=3,sheet3!a1))) 能不能做到让符合条件的单元格所在的列自动隐藏 比如说第一行的第一个单元格=1那么就自动隐藏第一行? 解答用vba。 Sub 隐藏() for i=1 to x x--行号 if sheets(1).cells(i,1)=1 then Rows(i).Select Selection.EntireRow.Hidden = True end if next i 直接输入一组数如“20020213101235”后,自动转换成日期格式 解答:A1中输入,B1中转换。。B1=Left(A1,4)&"—"&MID(A1,5,2)&"—"&MID(A1,7,2)&" "&MID(A1,9,2)&":"&MID(A1,11,2)&":"&MID(A1,13,2) 把sheet1到sheet200的a19这一格,依序贴到sheet0的a1到a200 解答:方法一:公式 可在A1储存格输入以下公式,再行拖曳至A200即可。 =INDIRECT("Sheet"&ROW()&"!A19") 方法二:VBA Sub Macro1() '选择工作表 sheet0 Sheets("sheet0").Select For r = 1 To 200 '将工作表 1~200 里面的 D17 复制到 sheet0 的 A1~A200 Cells(r, 1) = Worksheets(CStr(r)).Range("D17") On Error Resume Next Next r End Sub A列记录几百条,如何对这列计数(重复的数值不计) 我只能做到新建一列,B列,然后第一个单元格countif($A$1:$A$100,A1),然后拖动到全部新列。最后在新列下面用sumif(B1:B100,1) 谁有更好地方法? 解答:1、试试这个:{=SUM(IF(COUNTIF(A1:A100,A1:A100)=1,1,0))} 2、操作:①A1作公式栏,A2作字段名栏,如原该两栏有数插入2行。在A1输入:=SUBTOTAL(3,A$2:A$5000) 统计记录数或:=SUBTOTAL(9,A$2:A$5000) 数据汇总 ②选:数据-->筛选-->高级筛选-->选择不重复的记录。 ③复原选:数据-->筛选-->高级筛选-->全部显示。 3、试试这个: {=SUM(IF($A$1:$A$100="","",1/(COUNTIF($A$1:$A$100,$A$1:$A$100))))} 4、请解释一下,因为我单独使用COUNTIF($A$1:$A$100,$A$1:$A$100)数组公式时,它仅仅计算第一个也就是A1的个数. 5、我发觉你的这办法,只对唯一的数据进行了计数,而重复的数据全部未计入(是不是应该将重复的数据也计上一个?)打哈欠的“{=SUM(IF(COUNTIF(A1:A100,A1:A100)=1,1,0))}”也是这样。 TO 剑魔版主你公式中的“1/(COUNTIF($A$1:$A$100,$A$1:$A$100))”像是一个倒数,怎么理解? 6、用倒数是这个意思:如果只出现一次,数组中的相应项统计为1,其倒数为1,Sum统计计1 如果出现 N 次,其倒数为1/N,出现了N次,求和就是Nx1/N,最后Sum统计就只计1。 如果有文本串"YY0115",我想取第三、四的值"01",应该用什么函数 解答:1、=mid("YY0115",3,2)&"" 2、如果你的A1中的数值一定包含后四位阿拉伯数字的话,你可以用这个: =LEFT(RIGHT(A1,4),2)=LEFT(RIGHT(A1,4),2)=LEFT(RIGHT(A1,4),2) 3、我的实际工作中的数据还没有如此规律,该怎么办?如:A1="YY0105",A2="99065",A1取"01",A2取"99"。能否用一个函数去掉A1中"YY",然后都是从阿拉伯数字的第一位开始取两位数? 4、如果阿拉伯数字数量不定,但是以2个英文字母开头(或无英文字母),可以用以下公式:(设数据在A1中) =IF(ISNUMBER(VALUE(A1)),MID(A1,1,2),MID(A1,3,2)) 5、数组公式: {=MID(A1,MIN(IF(EXACT(LOWER(MID(A1,ROW(INDIRECT("A1:A256")),ROW(INDIRECT("A2:A257")))),UPPER(MID(A1,ROW(INDIRECT("A1:A256")),ROW(INDIRECT("A2:A257"))))),ROW(INDIRECT("A1:A256")),"")),2)} 怎样将文字和数字分2列显示 中行41785015110010091252、青泥支行200303004500696、卡伦办事处801017651、站前支行0709000309221004055 、金州支行400301459508091 解答:1、用函数可以解决。 假如A1 为 中行41785015110010091252 则B1=LEFT(A1,(SEARCHB("?",A1,1)-1)/2)、C1=MID(A1,LEN(B1)+1,50)、随后将B1、C1的公式往下复制。 2、Sub 分列() For Each jk In Sheet1.UsedRange.Columns(1).Cells For i = 1 To Len(jk.Formula) If Abs(Asc(Mid(jk.Formula, i, 1))) < 256 Then Sheet1.Cells(jk.Row, (jk.Column + 1)).Formula = "'" & Right(jk.Formula, (Len(jk.Formula) - i + 1)) jk.Formula = Left(jk.Formula, (i - 1)) Exit For End If Next i Next End Sub 3、是否将Asc(Mid(jk.Formula, i, 1)) < 256 改成 47 < Asc(Mid(jk.Formula, i, 1)) < 58 会更好,因为它只将数字抽出,如果数字前有英文字的话将抽往数字列。 4、我看帮助中instr函数不错 配合循环速度应快些 500个不连续的数之和的求法 我有一个表格,有一列数据是以6 个单元格为一个单位做一次小计,我在小计中加入了公式 但是我还想求一下这个小计的总合,我想加入一个公式,但是我有SUM到了50多个时就加不进去了,用加号连加也不行,不知这个问题怎么解决 解答:用SubTotal()解决即可 如何使输入的英文单词第一个字母变成大写 解答: Private Sub Worksheet_Change (ByVal Target As Range) Target.Value = Application.WorksheetFunction.Proper(Target.Text) End Sub 在一个表中有两列日期型数字请问如何在第三列中得到其差(两日期间的天数) 解答:=DATEDIF(A1,B1,"d") 问:我用了datedif发现一个问题 、即当A列列时,结果正确,而当A列>B列时出错了 、请问用什么办法解决 答:=IF(A1>B1,DATEDIF(B1,A1,"d"),DATEDIF(A1,B1,"d")) 重要的EXCEL文件坏了(文件带密码)有没有EXCEL修复工具 解答:Excel 2000 数据>>取得外部数据>>新增数据库查询>>Excel File*>>找到档案>> [选项]勾选所有选项>> 会找到所有未命名[区块]如Sheet1$ >>找到字段>>其它跟着查询精灵导引一步一步作 此中间层组件叫作Microsoft Query 可以用来拯救[毁损档案] 只要求简单的把数据从分表直接追加到总表 解答:你可以用Lookup,vlookup等函数。 A1中输入11:22:22 要求每间隔一秒刷新一次 解答: sub mytime range("a1")=now() Application.OnTime Now + TimeValue(" 00:00:01 "), "mytime" end sub 怎样用函数来显示某月的最后一天是几号 答:= DAY(DATE(年份,月份+1,1)-1) 如何用excel求解联立方程 x-x(7/y)^z=68 x-x(20/y)^z=61 x-x(30/y)^z=38 解答:这是一个指数函数的联列方程。步骤如下 1、令X/Y=W 则有 X-(7W)^z=68 X-(20W)^Z=61 X-(30W)^Z=38 2、消去X (20^Z-7^Z)W^Z=7 (30^Z-20^Z)W^Z=23 3、消去W (30^Z-20^Z)/(20^Z-7^Z)=23/7 由此求得Z=3.542899 x=68.173955 y=781.81960 请问如何在函数中同时使用两个条件 例:在IF同时使用条件B1>0和B1<10 解答:and(B1>0,B1<10) 用TRIM把“中 心 是”中间的空格去掉 解答:用SUBSTITUDE()函数,多少空格都能去掉。如A1中有:中 心 是 则在B1中使用=SUBSTITUTE(A1," ","")就可以了。注意:公式中的第一个“ ”中间要有一个空格,而第二个“”中是无空格的。 将EXCEL中的单元格定义成数组 我在编写程序时遇到这样一个问题, 每次用循环程序时向单元格写或读数据时总是面向一个固定区域,如Range("A1:D10") 。请问有没有方法能做到像数组那样,将单元格的下标由常量变成变量!。如下面这种形式,那编程时会减少很多的工作量!。Range("A[value1]:D[value2]") 解答:range(cells(行数,列数),cells(行数,列数))、行数 列数可用变量带入。或:Range("A" &trin(str(value1)) & ":" & "D" & trim(str(value2))) 将单元格行、列高与宽单位设置成毫米 解答:其实行高和列宽的换算总题是不太复杂的,只要用打印机打印一个单元格的框架,再用尺子量出单元格框架的长和宽,然后用这个值跟单元格的磅值进行换算即可. 例:单元格的宽度是8.38磅,高是14.25磅.打印出来后宽度是19.6mm,高是6mm,这样就得出磅和毫米之间的换算关系 .宽:19.6mm/8.38磅=2.339mm/磅; 高:14.25磅/6mm=2.375磅/mm 好了,我想不用我多说你就会制出跟实际表格一模一样的表格来. 一些电话号码如果是8结尾,号码加1;如果不是,号码加0. 解答:1、如果A1=1008 在B1中输入 =if(right(a1,1)=8,a1+1,a1),可以实现如果结尾是8加1,不是8则不加。2、如果不是上述意思则为 =if(right(a1,1)=8,concatenate(a1,1),concatenate(a1,0))。3、实际上应该是:=if(right(a1,1)=8,a1&"1",a1&"0")。 当做日报表时,怎样让月累计数自动加上 就是要月累计自动加上今天的当日收入数,今天只输入当日收入,我想用用前一天的月累计数加上今天的当日收入数为今天的月累计数.情况是一月一个工作薄,每一个工作薄下30个工作表,用每一天的日期为报表名.我想把月累计的公式写为 =sheet17!c5 中的 17 用 day(now())-1 的值去取代他,该怎么办呢? 以下为报表格式,谢谢大家帮我想一想. 部门-------当日收入 -----------月累计 团队收入 12.12 123.00 写字间收入 147,258.00 147.147 房内吧收入 147,258,369.00 解答:1、=SUM('Sheet1:Sheet30'!C5) 在你需要月汇总的单元格填入上述公式,其作用是将工作表1到工作表30的“C5”单元格的值全部累加起来,而“C5”单元格应填入当日的收入数。 “我想把月累计的公式写为 =sheet17!c5 中的 17 用 day(now())-1 的值去取代他,该怎么办呢? ”---这可能需要VBA才能实现。2、 如果工作重复的话,可以制作一个模板,公式事先定义好,每次用时新建一工作簿即可。 “把月累计的公式写为 =sheet17!c5 中的 17 用 day(now())-1 的值去取代他”,还没找到方法,调试好了再告诉你。3、 =INDIRECT(ADDRESS(1,1,1,1,"sheet"&DAY(NOW())-1)) 单元格A1=(a2,a3,a4,a5)其中一个就返回AA,如果A1=a6,就返回BB,否则就返回CC 解答:=IF(OR(A2=A1,A3=A1,A4=A1,A5=A1),"AA",IF(A6=A1,"BB","CC")) 关于引用及计算的问题 Sheet1!A1=Sheet2!A3 /Sheet1!A2=Sheet3!A3 /Sheet1!A3=Sheet4!A3/........ /能有什么方法可以快速得出Sheet1!A4及以下的数值?(比如说至Sheet1!A100) /还有就是 /Sheet1!A1=Sheet2!A3+Sheet2!B7 /Sheet1!A2=Sheet3!A3+Sheet3!B7 /Sheet1!A3=Sheet4!A3+Sheet4!B7/........ /又该如何实现? 解答:1、=INDIRECT("Sheet"&ROW()+1&"!A3")。2、数量1: =INDIRECT((ROW()-1)&"!$B$3") 数量2: =INDIRECT((ROW()-1)&"!$C$4")+INDIRECT((ROW()-1)&"!$D$5") 如何统计某个列有数字的个数 解答:=COUNT(A:A) 如何统计此次自动筛选 出来共有的记录条数 解答:用 counta 统计 怎么把等于A栏里的一个值的,再统计出B栏里不同数据的个数 [A] [B] a 北京 /a 广州 /a 天津 /b 广州 /b 长沙 /a 北京/b 北京 /b 长沙我还想再加个条件呢?比如: A栏是a的有3个不同的城市,A栏是b的有3个不同的城市,))... 解答:1、{=sum((a1:a10="a")*(b1:b10="广州"))}。2、你搞错我的意思了,我是想要不同城市的值,如:当A栏中等于a的,就统计出B栏中有多少个不同的城市数量,其结果是3(三个不同的城市)。3、就你这道例题来讲:设数据在A1:B8中: {=COUNT(LARGE(IF($A$1:$A$8="a",(CODE(LEFT($B$1:$B$8))&CODE(RIGHT($B$1:$B$8)))*1,""),ROW($A$1:$A$5)))-IF(LARGE(IF($A$1:$A$8="a",(CODE(LEFT($B$1:$B$8))&CODE(RIGHT($B$1:$B$8)))*1,""),ROW($A$1:$A$5))-LARGE(IF($A$2:$A$9="a",(CODE(LEFT ($B$2:$B$9))&CODE(RIGHT($B$2:$B$9)))*1,""),ROW($A$1:$A$5))=0,1,0)}公式也有局限性,就是城市最多两个字,三个四个也可以,但肯能会出错,就是会漏掉 如何用IF函数达到我想要的结果 工作表数据如下: A列 B列 C列 D列 E列 1 5 9 H /2 6 0 I /3 7 F J /4 8 G K /我想当A列=1或2或3 时,E列=A列对应的值,/否则CONCATENATE(A2,B2,C2,D2) /结果如下: A列 B列 C列 D列 E列 1 5 9 H 1 /2 6 0 I 2 /3 7 F J 3 /4 8 G K 48GK /请问这个公式怎么写? 解答:=IF(OR(A1=1,A1=2,A1=3),A1,A1&B1&C1&D1) 关于实现“查找并替换”的宏 我相要编写一个自动替换的宏。 要替换的内容如下: 把特殊符号“▼”替换为 “ ▼ ” 即把原特殊符号前后各加上一个换行符。 解答:Sub Macro() Cells.Replace What:="▼", Replacement:=Chr(10) & "▼" & Chr(10), lookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub 用了一下,有问题,把 “, SearchFormat:=False, ReplaceFormat:=False” 删除后就能用了,不过,原有的文本格式设置都没有了,有点儿得不偿失了,呵呵。 我在想,删除里的“ReplaceFormat”是用来指定格式的吧,可我看了“Replace”的帮助,没有这个参数设置的。我用的是Execl2000,不知道有没有联系。 有关输入数字的提示 ①、可作为数字使用的字符 在 Microsoft Excel 中,数字只可以为下列字符: 0 1 2 3 4 5 6 7 8 9 + - ( ) , / $ % . E e ②、Excel 将忽略数字前面的正号(+),并将单个句点视作小数点。所有其它数字与非数字的组合均作文本处理。 ③、输入分数 为避免将输入的分数视作日期,请在分数前键入 0(零),如键入 0 1/2。 ④、输入负数 请在负数前键入减号 (-),或将其置于括号( )中。 ⑤、对齐数字 在默认状态下,所有数字在单元格中均右对齐。如果要改变其对齐方式,请单击“格式”菜单“单元格”命令,再单击“对齐”选项卡,并从中选择所需的选项。 ⑥、数字的显示方式 单元格中的数字格式决定 Excel 在工作表中显示数字的方式。如果在“常规”格式的单元格中键入数字,Excel 将根据具体情况套用不同的数字格式。例如,如果键入 $14.73,Excel 将套用货币格式。如果要改变数字格式,请选定包含数字的单元格,再单击“格式”菜单上的“单元格”命令,然后单击“数字”选项卡,再根据需要选定相应的分类和格式。 ⑦、“常规”数字格式 如果单元格使用默认的“常规”数字格式,Excel 会将数字显示为整数(789)、小数(7.89),或者当数字长度超出单元格宽度时以科学记数法(7.89E+08)表示。采用“常规”格式的数字长度为 11 位,其中包括小数点和类似“E”和“+”这样的字符。如果要输入并显示多于 11 位的数字,可以使用内置的科学记数格式(指数格式)或自定义的数字格式。 ⑧、15 位限制 无论显示的数字的位数如何,Excel 都只保留 15 位的数字精度。如果数字长度超出了 15 位,Excel 则会将多余的数字位转换为零 (0)。 ⑨、将数字作为文本输入 即使用“单元格”命令将包含数字的单元格设置为“文本”格式,Excel 仍将其保存为数字型数据。如果要使 Microsoft Excel 将类似于学号之类的数字解释为文本,需要先将空单元格设置为“文本”格式,再输入数字。如果单元格中已经输入了数字,需要对其应用“文本”格式,然后单击每一个单元格并按 F2 键,再按 ENTER 键重新确认数据。 ⑩、区域设置 可作为数字使用的字符取决于“控制面板”中“区域设置”内的选项。这些选项也决定了数字的默认格式,例如:在美国系统中句号 (.) 作为小数点使用。 如何判断某个单元格包含某个字符 解答:设A1=LOVE,查找字母L是否在A1中, =IF(ISERROR(SEARCH("L",A1)),"NO","YES") 按条件设定数值 我想定义单元格A1,在下列条件下数值不同: 1.在B1大于0小于20时等于6; 2.在B1大于20小于36时等于4; 3.在B1大于36小于56时等于2; 4.大于56以上等于1.请问:A1公式应该如何? 解答:=IF(B1=<0,"OUT",IF(AND(B1>0,B1<=20),6,IF(AND(B1>20,B1<=36),4,IF(AND(B1>36,B1<=56),2,1)))) 又问:开头的"B1=<0,"OUT","是起什么作用的? 又答:从数学角度来说,一个有理数的范围是从负无穷到正无穷的。在你给我的B1的数值范围内,只定义了从0到正无穷,对于当B1<0或=0时没有定义。而我在做IF函数时,必须要考虑到当B1处在<=0的范围时,A1需要回返的结果。所以我自己把它定义为,当B1<=0时,返回文本OUT,你自己可以把OUT改成任意你想出现的数字。另外,在你开始的条件定义中,都是当B1大于多少,小于多少,这也是不严格的,因为你没有定义当B1=0,=20,=36时A1要返回的值。因此,我在写函数时,也自己帮你加了上去。关于这一点,你也可以在函数中自己改成你需要的定义范围。总之,在做IF函数时,请一定考虑到数值可能产生的所有范围及其对应返回的值。 再问:怪我没对您说明白,我的文件里,B1永远是大于0的. 再答:如果你确定B1里出现的数值永远是大于0的,那么此函数可以简写为: =IF(AND(B1>0,B1<=20),6,IF(AND(B1>20,B1<=36),4,IF(AND(B1>36,B1<=56),2,1))) 返回的结果与原先是一样的。但是,容我在此提醒你,在这个函数里,它与原先函数的区别是当B1>56或B1<=0时,返回的值是一样的。所以,当A1返回的值=1时,无法判断是因为B1>56,还是因为B1<=0(按你的定义即为B1输入的数值有误)。所以,本人还是建议要将所有的情况都考虑在内。 小数的进位问题 在excel中,我想将小数点后所有的有效数都进为1,请问用什么方法? 、如:3.25、4.6、5.3....等进位为4、5、6....... 、说明:以上数值均为公式的计算结果,是可变的. 解答:C3 = 3.25 、则在D3中输入“=ROUNDUP(C3,0)” 找出A列的数字在B列中所在的位置, 并在第三列显示单元格号 解答:假设数据在A1:B10,则C列公式为 =MATCH(B1,$A$1:$A$10,0) 从G9到G71,需要隔行求和 解答:在需要的单元格中(如G72单元格)输入 :=SUM(IF(MOD(ROW(G9:G71),2)=1,G9:G71,0)) 按Ctr+Shift+Enter即可。 在单元格返回工作表名称 解答:函数方法: =MID(CELL("filename"),FIND("]",CELL("filename"))+1,100) 多条件计算公式 countif(a1:a100,"a")只等求取一个值的合计个数两个以上条件的个数用下列公式: sum(if(a1:a100="a",if(b1:b100<50,1,0)。也可以用数组公式:{=SUM((A1:A100="a")*(B1:B100<50)} 如何统计求每天不重复的值 如图所示:我想统计算出每天不重复的管理员? 日期行数中的值每月每天都是上下午2个单元格分别以数字代表; 管理员行中的管理员每月每天就没有固定的取值了,但人员数是不变的。 图中管理员需求的值为:A=9;B=7:C=3 如图: 解答: C2=A C3=B C4=C D2:{=SUM(($B$2:$B$21=C2)*(MATCH($A$2:$A$21&$B$2:$B$21,$A$2:$A$21&$B$2:$B$21,0)=ROW($A$1:$A$20)))} 拖到D4 使用vlookup函数的问题 当时有两千多人的考试成绩要与花名册挂接,考试成绩放在sheet km1中,花名册放在sheet hmc中,他们共有字段为准考证号,我的想法是根据准考证号,用vlookup函数查找相应的成绩并放在相应的人员下。 sheet km的准考证号放在第一列,考试成绩放在第二列,查找范围是$a$2:$b$2265,sheet hmc的准考证号党在第一列。 公式为: vlookup(a2,km!$a$2:$b$2265,2,false) 公式应该没什么问题,但只能找到很少的纪录(<60),究竟是什么地方除了问题,请高手指点! 解答1:可以用SUMIF函数解决: =SUMIF(km!$A$2:$B$2131,A2,km!$B2:$B$2131) (作者注:将sheet km下的所有准考证号都转化为文本,再使用vlookup函数,一切正常!vlookup函数查找区域必须转化为文本!) 20列间隔3列求和 解答:假设a1至t1为数据(共有20列),在任意单元格中输入公式:=SUM(IF(MOD(TRANSPOSE(ROW(1:20)),3)=0,(a1:t1)) 按ctrl+shift+enter结束即可求出每隔三行之和。 如何实现把一个工作表中的数据根据另外一个表的数据分成两部分 例如:在SHEET1中的数据如下: 1,A /2,B /3,C /4,D /5,E /6,F 在SHEET2中的数据如下: 3,5,1 现在想要得到数据 3,C /5,E /1,F /请问如何具体操作? 解答1:SHEET1:a1:a5为:1,2,3,4,5;b1:b5为:a,b,c,d,e SHEET2:a1:a5为:1,2,3,4,5;b1输入:=sum(if(sheet1!a1:a5=a1,sheet1!b1:b5,"")),记住是数组,即输入完后按ctrl+enter,再看公式会变成:={sum(if(sheet1!a1:a5=a1,sheet1!b1:b5,""))} 解答2:比如sheet1中,数据在a1:b5 .sheet2中,3在a1,在a2中输入公式:=vlookup(a1,sheet1!$a$1:$b$5,2,false)然后按着shift键把下面的单元格选中,再按ctrl+d将公式复制下去就搞定了!如果对公式不熟悉,可以采用公式向导的办法。 查找引用 表1中有一系列的数据 A B C Lyyf 12 23 /Kkk 34 23/Klk 455 5 /Ljkl 66 6 /Klsda 78 1 /我想在表2查找表1是否有Klk并引用Klk相对应行的数据。 解答:在表2中输入:/=SUMIF(表1!A1:A5,表1!A3,表1!B1:B3) 再问:用volkup函数行吗? 再答:=VLOOKUP(表1!A3,表1!A1:B5,2) 需要验证因此必须在要列示出计算过程有什么办法 比如:f1=(d1+d3)/AVERAGE(e1,e2) 其中 :d1=2/d3=1 /e1=4 /e2=5 /我想在一个单元格里显示出“=(2+1)/[1/2*(4+5)]”/有什么办法吗? 解答:在单元各g1显示计算过程: g1="=("&D1&"+"&D3&")/"&"(0.5*("&E1&"+"&E2&"))" 再问:我忘记说了,不是每个数都有很多位小数, 我的公式是:F1"="&C23&"/(0.5*"&!G31&"+"&!H31&")" 其中c23也是计算得出数,有影响吗? 只有分子是很多位小数,我查看了各单元格的设置,都是数字,使用千分位分隔符。 而且,我想在其中加上千分位符,怎么办? 再答:计算结果只想保留两位小数,可以在单元格里将数值设置为两位。 你若是想在显示计算公式里采用两位小数、使用千分位分隔符,可以这样试试:将需替换的"C23"替换为"FIXED(C23,2)"。 在制作Excel图表时,如何控制X轴的刻度显示 如:有一组数据x(1,2,3,4,5,6,7,8,.......30)、y(100,200,300,400,......3000)制成的图表X轴默认显示的刻度为1,2,3,4,5,6,7,8,.......30,如何将其改为五的倍数才显示刻度,即只显示5,10,15,20,25,30。文字 解答:选中X坐标轴,右击。选中“坐标轴格式”,选“刻度”标签页,在“主要刻度单位”的输入项,键入“5”,或者其它的数值。 条件求和 我目前在使用Excel xp,先急需解决一个条件求和的问题~ 具体问题描述如下:如图, A B C 1 日期 属性 数量 /2 1.1 现金 236.34 /3 1.1 存款 123.45 /4 1.1 外汇 1222.5 /5 1.1 现金 2651.2 /6 1.2 现金 11.5 /7 1.1 存款 281.65 /8 1.2 存款 1.1 /9 1.2 存款 346.5 /10 1.2 存款 346.5 /11 1.2 现金 346.5 /12 1.2 外汇 346.5 /13 1.2 外汇 346.5 /14 1.2 外汇 346.5 /15 1.2 外汇 346.5 /16 1.2 外汇 346.5 /17 1.2 外汇 346.5 /18 1.2 外汇 346.5 /19 1.2 外汇 346.5 /一个A1:C19表,要求求日期为"1.1"的属性为"现金"的数量的和.个人认为应该用sumif()函数的嵌套,或者用if()函数的嵌套,但是,写了很多式子尝试都不成功,希望知道的人,能及时帮助我,非常感谢~ 我很着急! 解答:E F 1 属性 日期 /2 现金 1.1 /E4=DSUM(A1:C19,C1,E1:F2) 又问:我实验了您提供的方法,可行,但是,先有两个问题需要解决: 1.如果远先的双条件column列不是互相比邻的,那么,DSUM()又该如何写呢? 例如SUM(A1:C20,C1,D1:E2) 但是现在,需要比较的两个条件如果分别为A列跟C列,而需要求和的数据却在E列,该如何解决呢? 2.虽然您提供的方法能够解决问题,但是,我想我是预先给定了一个条件的,您就建了一个条件,但是,如果我的条件搭配方式非常多,那不是要建里很多条件来满足DSUM()函数方式么? 又答:求和条件一般是在单独的单元格里写出来的。而不是直接在数据区域里。如果你的条件非常多,又经常变化,就应该用数据透视表了。 解答2:=SUM(IF(IF(A2:A19=1.1,B2:B19,0)="现金",C2:C19,0))其中,如果"日期"字段为数字型,如为文本型,则在1.1上加引号.在写完公式后,不要按回车,需按shift+ctrl+回车.此为数组公式. 解答3:工作表插入头两列 ,数据从A3开始 C1=SUBTOTAL(9,OFFSET(A4,,,COUNTA(A4:A65536),))自动筛选:由它提供控件. 怎样查找某列中文本长度不足X 位的数据 我用 Excle 管理工资,可是银行帐号有的不足21 位。必须把它查找出来,传统的方法太费时间,怎样利用函数等功能快速查找不足21位的帐号呢? 解答:用len()判断一下就可以。设a列为数据,在b1输入:if(len(a1)<21,0,1),往下拉公式。 或者用高级筛选也可以 WORD向EXCEL格式转换时一个单词或汉字分别填入EXCEL中的一个单元格中 解答:在WORD中利用“替换”功能,把每个字符后面都加上一制表符,(在“查找”框中单击“高级”按钮,弹出“高级对话框”,把光标置入“查找”框内,在“特殊字符”中单击“任意字符”,再把光标置入“替换”框内,在“特殊字符”中单击“要查找的文字”,再单击“制表符”,再全部替换) 然后复制或剪切,在EXCEL中粘贴即可。 如何将名称相同的字段合并汇总,且只显示同一个名称 如:公交公司 50 60,交通集团 60 40,公交公司 100 600,大学 60 10 将以上数据表进行合并汇总,即两个公交公司合计为一个单位,后面的数据进行相应求和汇总。 结果:,公交公司 150 660,交通集团 60 40,大学 60 10 解答:用SUMIF同样能够实现,按照上次的公式+公式+公式+……,例:=SUMIF($A$1:$A$4,"公交公司",$B$1:$B$4)+SUMIF(Sheet2!$A$1:$A$4,"公交公司",Sheet2!$B$1:$B$4)+SUMIF(Sheet3!$A$1:$A$4,"公交公司",Sheet3!$B$1:$B$4)+SUMIF(Sheet4!$A$1:$A$4,"公交公司",Sheet4!$B$1:$B$4)。 也可以这样:=IF(Sheet1!$A$1:$A$4="公交公司",IF(Sheet2!$A$1:$A$4="公交公司",IF(Sheet3!$A$1:$A$4="公交公司",IF(Sheet4!$A$1:$A$4="公交公司",SUM(Sheet1!B1:B4+Sheet2!B1:B4+Sheet3!B1:B4+Sheet4!B1:B4))))) " "中的内容根据自己的条件需要改变。 或者:用菜单“数据》合并计算”功能。 按工号大小排列 表1 工号 成绩 月份/01 20 1月/06 30 1月/100 60 1月/102 80 1月 表2 工号 成绩 月份/01 80 2月/07 90 2月/100 89 2月/102 90 2月/130 100 2月 要求产生的表: 工号 成绩/1月 2月 /01 20 80/06 30/07 90/100 60 89/102 80 90/130 100请问如何实现按工号大小排列? 解答:记录的自动筛选我已经解决,请仔细体会例子中公式的含义。多条件数据的求和,用数组公式: =SUM((条件1所在区域="条件1")*(条件2所在区域=条件2)*(要求和的区域))。文本用“ ” 两日期间的天数 Q:在一个表中有两列日期型数字 ,请问如何在第三列中得到其差(两日期间的天数) A:=IF(A1>B1,DATEDIF(B1,A1,"d"),DATEDIF(A1,B1,"d")) 序列问题 我用EXCEL做了一个模板,其中一些数据(文本数据)是经常重复的,但我每次只好重新输入,作了很多重复劳动,请告知如何做一个选择对话框,把以往输入的数据(文本数据)显示以供选择,更好是能按字母查询。谢谢!! 解答:在B列设置数据验证,首先定义“名称”为ABC在引用位置设置为A1:A1000 然后将B列数据有效性设置为: ”序列“ ”=ABC“ 在A列输入的数据在B列就会列出来 条件乘积的求和 A列为部门名称,B列为姓名,C列为日工资额(如20.00),D列为月出勤天数,我想在另一汇总表中汇总出各部门员工月工资总额(即:相应部门对应的C*D之和)。请问如何解决? 解答1:直接写公式有点困难,我的想法是用vba编程实现。思路如下: 编写一个循环,遍历A列, 并进行检测,设置几个变量,分别代表几个部门和相应的工资总额,每当部门变量和单元格的值相等时,就把该值加到相应的工资总额变量中,直到遍历结束。 解答2:采用数组公式:{sum((Aarray="部门名称")*(Carray)*(Darray)*1} 其中array为对应的区域名称! 解答3:1、使用数据透视表的功能。 2、或者使用SUMPRODUCT函数。 如何判断 如果 c2为空,则如果b2含有“1”,或者“2”,或者“3”的话,d2=b2*4-5,请问各位高手,以上如何在excel内实现判断. 解答1:D2=IF(AND(C2="",OR(B2=1,B2=2,B2=3)),B2*4-5,"") 解答2:(上面的解答和题意不符,含有字符1、2、或3。应该写成d2=IF(C2="",IF(ISERROR(FIND(1,B2,1)>0),IF(ISERROR(FIND(2,B2,1)>0),IF(ISERROR(FIND(3,B2,1)),"",B2*4-5),B2*4-5),B2*4-5),"") 用字母在单元格里面填入平方米 解答1:在编辑状态下,选中“2”,按鼠标右键,选择“设置单元格格式”,选“上标” 解答2:按[ALT]+数字键178[ENTER] 在Excel中打印条形码 解答:在Office中都可以通过在控件工具箱单击"其它控件",选取"Microsoft BarCode Control 9.0" ,然后进行赋值操作即可。 求工龄 =DATEDIF(B2,TODAY(),"y") =DATEDIF(B2,TODAY(),"ym") =DATEDIF(B2,TODAY(),"md") =DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"月"&DATEDIF(B2,TODAY(),"md")&"日" 把26个表格汇总求和成一个汇总表 解答:假设汇总的工作表叫Sheet1,而存放数据的工作表叫Sheet2, Sheet3, ..., Sheet27,你可以这样设置公式,把各工作表A1的数值加起来: =SUM(Sheet2:Sheet27!A1) 要注意的是,Sheet1不能在Sheet2和Sheet27中间,Excel不会管工作表的名字,只会把Sheet2和Sheet27中间的*所有*工作表中相关的储存格(哪怕中间有一个工作表叫Sheet99)加起来。 1、在汇总表单元格内选择“Σ” 2、选择需要叠加的第一个工作表 3、按住shift同时用鼠标选择需要叠加的最后一个工作表 4、选择需要叠加的单元格 5、Enter 重复数据得到唯一的排位序列 想得到数据的出现总数吗({1,2,2,3,4,4,5} 数据的出现总数为5)? 解答:不需要插列,不需要很多的函数就行了. =RANK(B3,B$3:B$12)+COUNTIF(B$3:B3,B3)-1 从身份证号码中提取性别 Q: A1单元格中是15位的身份证号码,要在B1中显示性别(这里忽略15位和18位身份证号码的判别) B1=if(mod(right(A1,1),2)>0,"male","female")请问这个公式有无问题,我试过没发现问题。但在某个网站看到作者所用的是如下公式: B1=if(mid(A1,15,1)/2=trunc(mid(A1,15,1)/2),"female","male") 答:道理都是一样的,不过你的公式比那个公式优质。 如何从文本文件中取数 Q: 1.如何从文本文件中取2,4,6,8......行的数据到EXCEL中? 2.在EXCEL中如何实现产生一个ACCESS的表,并把指定的数据存入ACCESS的表中. A: 1.(暂时不知道你问的目的是什么,如果仅仅要结果,就往下看)如果要导入一文本文件(过程略),导入的结果在SHEET1的A1:100(如果是100行的话)中,此时不管它奇还是偶行;然后在SHEET2的A1中输入公式=INDEX(Sheet1!$A$1:$A$81,2*ROW(),COLUMN()),拖公式,就可以截取到文本文件的2,4,6,8,10......行了。 2.关于EXCEL转为ACCESS,MS专门为用户设计了一个这样的ADD-IN,你可到http://office.microsoft.com/downloads/2002/acclnk.aspx 当一个 怎样读取数字 Q: 怎样在一数字符串分解为单独的数字,比如将31234的值分解为3/1/2/3/4,读出后将相应的结果填充到固定的单元格 A:1用RIGHT() 或LEFT() 2.假设A1单元格为:31234,结果分别放入B1—B5, B1=MID(a1,1,1);B2=MID(a1,2,1);B3=MID(a1,3,1);B4=MID(a1,4,1);B5=MID(a1,5,1) 3.用数据->分列->固定宽度...试试. 4.RIGHT(RIGHT(B2,1),1) 假设A1单元格为:31234,结果分别放入B1—B5, B1=LEFT(LEFT(a1,1),1);B2=RIGHT(LEFT(a1,2),1);B3=RIGHT(LEFT(a1,3),1);B4=RIGHT(LEFT(a1,4),1);B5=RIGHT(LEFT(a1,5),1) 怎样才能快速算出 有这样一个问题:年终结帐:要将12个月的账分成二笔来结,(假定数据如下)假定一笔为300或最接近300,剩余的为另一笔。怎样才能快速算出? 1月 56.6 、2月 12.1 、3月 54.3 、4月 87.8 、5月 43.2 、6月 61.4 、7月 32.7 、8月 27.5 、9月 38.2 、10月 11.1 、11月 36.9 、12月 29.4 、总数 491.2 A: 我给出将12个月的账分成若干份(即是未知的)结,条件还一样。 这个弄明白了,你想要的自然就会做出了。 E F G 1 1月 56.6 =IF(F1>=300,F1,"$F$1") 2 2月 12.1 =IF(ISNUMBER(G1),"$F$" & ROW(G1),IF(SUM(INDIRECT(G1 & ":F" & ROW(G2)))>300,SUM(INDIRECT(G1 & ":F" & ROW(G1))),G1)) 3 3月 54.3 =IF(ISNUMBER(G2),"$F$" & ROW(G2),IF(SUM(INDIRECT(G2 & ":F" & ROW(G3)))>300,SUM(INDIRECT(G2 & ":F" & ROW(G2))),G2)) 4 4月 87.8 =IF(ISNUMBER(G3),"$F$" & ROW(G3),IF(SUM(INDIRECT(G3 & ":F" & ROW(G4)))>300,SUM(INDIRECT(G3 & ":F" & ROW(G3))),G3)) 5 5月 43.2 =IF(ISNUMBER(G4),"$F$" & ROW(G4),IF(SUM(INDIRECT(G4 & ":F" & ROW(G5)))>300,SUM(INDIRECT(G4 & ":F" & ROW(G4))),G4)) 6 6月 61.4 =IF(ISNUMBER(G5),"$F$" & ROW(G5),IF(SUM(INDIRECT(G5 & ":F" & ROW(G6)))>300,SUM(INDIRECT(G5 & ":F" & ROW(G5))),G5)) 7 7月 32.7 =IF(ISNUMBER(G6),"$F$" & ROW(G6),IF(SUM(INDIRECT(G6 & ":F" & ROW(G7)))>300,SUM(INDIRECT(G6 & ":F" & ROW(G6))),G6)) 8 8月 27.5 =IF(ISNUMBER(G7),"$F$" & ROW(G7),IF(SUM(INDIRECT(G7 & ":F" & ROW(G8)))>300,SUM(INDIRECT(G7 & ":F" & ROW(G7))),G7)) 9 9月 38.2 =IF(ISNUMBER(G8),"$F$" & ROW(G8),IF(SUM(INDIRECT(G8 & ":F" & ROW(G9)))>300,SUM(INDIRECT(G8 & ":F" & ROW(G8))),G8)) 10 10月 200 =IF(ISNUMBER(G9),"$F$" & ROW(G9),IF(SUM(INDIRECT(G9 & ":F" & ROW(G10)))>300,SUM(INDIRECT(G9 & ":F" & ROW(G9))),G9)) 11 11月 36.9 =IF(ISNUMBER(G10),"$F$" & ROW(G10),IF(SUM(INDIRECT(G10 & ":F" & ROW(G11)))>300,SUM(INDIRECT(G10 & ":F" & ROW(G10))),G10)) 12 12月 29.4 =IF(ISNUMBER(G11),"$F$" & ROW(G11),IF(SUM(INDIRECT(G11 & ":F" & ROW(G12)))>300,SUM(INDIRECT(G11 & ":F" & ROW(G11))),G11)) 13 =IF(ISNUMBER(G12),"",SUM(INDIRECT(G12 & ":F" & ROW(G13)))) 14 总数 491.2 最后结果为: E F G 1 1月 56.6 $F$1/2 2月 12.1 $F$1 /3 3月 54.3 $F$1/4 4月 87.8 $F$1/5 5月 43.2 $F$1 /6 6月 61.4 254 /7 7月 32.7 $F$6 /8 8月 27.5 $F$6 /9 9月 38.2 $F$6 /10 10月 200 159.8 /11 11月 36.9 $F$10 /12 12月 29.4 $F$10 /13 266.3 /14 总数 491.2 /说明:G6 为 F1:F5 之和、G10 为 F6:F9 之和、G13 为 F10:F12 之和。 如何实现对日期格式的要求条件 Q:在条件语句中如何实现符合某个时期的条件的记录进行统计,比如有1-12月份的记录单,需要实现对每个月里些数据的统计汇总/(格式如何?) A: dongmu 以下公式,A列为日期列,B列为数据,要求计算1月份的累计: =SUM(IF(MONTH(A:A)=1,B:B,0)) 此为数组公式,在输完公式后,不要ENTER,而要CTRL+SHIFT+ENTER.(好象不足呀!程香宙) 截取单元格里某个字符后的字符 A: tof :使用RIGET()或LEFT()函数就可以了,详细可以参考EXCEL的帮助 liberty:比如这样: a1内容为dfgsd2163.com,g2er.g 我需要提取出,号以后的字符,g2er.g 午餐 :先使用SERACH或FIND函数找出“,”的位置,再用MID来取数,如A1=123,456,我想取出“,”以右的数,可以=MID(SEARCH(,),8)。可能我用的函数不行,不过思路一定行。 你多看看帮助文件,我在网吧,此机无EXCEL无法试,不过我以前用过,用MID加SEARCH一定行的通,多试试吧。 实在不行再给我邮箱发信了,愿意帮忙!祝你好运。 我认为能用函数解决的最好不用VBA,你说呢? markxg :假设A1中有dfgsd2163.com,g2er.g =RIGHT(A1,LEN(A1)-SEARCH(",",A1,1)) missle:我今天也试着用公式解决了你的问题,思路与MARK的一样,只是他用的是SEARCH,我用的是FIND。但不是很清楚你的问题,是否要把“,”号一起给截取下来,如果是的话:公式应该是=RIGHT(A1,LEN(A1)-SEARCH(",",A1,1)+1),否则“,”号是无法截取到的。 把问题给纵深一下,如果单元格内有多个“,”的话,如A1中是:aa,bb,cc,dd 我想截取 cc,dd 该如何作呢?或者想知道这个单元格中含有多少个“,”又应该如何呢?(VBA的解决方法除外) 午餐 :Missle,你看仔细了,在Search函数中是有参数的,它允许你指定在第几个出现显出位置,如“,”你可以通过指定search参数选定第几次出现时的位置,对于截取我更认为MID比LEFT和RIGHT好 用if函数判断 请问:如何用if函数判断,如果a1单元格大于0,b1单元格为0是错误,为非0是正确? A: dongmu if(and(a<=0,b=0),"错误","正确") 葡萄 :=if(a1>0,if(b1=0,"错误","正确"),"条件一不满足") 分别显示总分最高的同学的班级、姓名、总分 Q:问题1是这样的: 1、在A1:A30单元格区域中输入500至600之间的数值; 2、在B1单元格中输入500; 3、在C1单元格中插入公式: COUNTIF(A1:A30,">=INDEX(B1,1)*0.9") 回车后C1单元格中显示的结果是0,为何不能把A1:A30中输入的数大于或等于500*0.9的单元格个数统计出来?错在哪里,该如何更正? 问题2有下面一个表格: 班级 姓名 政治 语文 数学 总分 1 小东 90 90 90 270 /2 明明 95 92 90 277 /3 小英 96 89 91 276 /要在K1:K3的单元格中分别显示总分最高的同学的班级、姓名、总分 .该如何设置公式? 答案1:建议你好好看看COUNTIF的帮助,真是搞不明白,为什么在B1里输入500而不是450呢? COUNTIF不支持一个以上的条件,你应该用DCOUNT。 答案2: K1=INDEX(A2:F4,MATCH(K3,F2:F4,0),1) K2 =INDEX(A2:F4,MATCH(K3,F2:F4,0),2) K3=MAX(F2:F4) 解答3: 问题一:公式改为:=COUNTIF(A1:A30,">=" & INDEX(B1,1)*0.9) 问题二:在K1:K3中分别输入如下公式(假设A1为"班级"): =LOOKUP($K$3,$F$2:$F$4,A2:A4) =LOOKUP($K$3,$F$2:$F$4,B2:B4) =LARGE(F2:F4,1) 解答4 第一题:=COUNTIF(A1:A30,">="&B1*0.9) 第二题:K1==INDIRECT("A"&MATCH( MAX (F1:F4),F1:F4)) K2 =INDIRECT("B"&MATCH( MAX (F1:F4),F1:F4)) K3= MAX (F2:F4) 定有如上两列数据A和B 现在想要统计满足条件B=8的 并且在C列自动生成数据 Q: A B C 427 8 427 /612 8 612 /924 8 924 /22 16 409 /94 16 /620 16 /955 16 /409 8 请问 :假定有如上两列数据A和B ,现在想要统计满足条件B=8的 ,并且在C列自动生成数据,我不懂公式怎么写?我知道筛选能够做到 ,但是由于数据量比较大 ,想做一个模板,免去一些重复劳动 . A: dongmu =IF(ROW($A1)>COUNTIF($B$1:$B$8,8),"",INDEX($A$1:$A$8,MATCH(SMALL(IF($B$1:$B$8=8,0,1)+ROW($B$1:$B$8)/100000,ROW ($A1)),IF($B$1:$B$8=8,0,1)+ROW($B$1:$B$8)/100000,0))) 老夏 L: B栏有100个选取条件,公式要修改100次 ,有甚么灵活性?,给字段名称,插入头两列.B1=SUBTOTAL(9,B4:B65536) .解决掉所有问题 ,控件找自动筛选. 排名问题 在A1:F6区域有下面一个表格: 班级 姓名 政治 语文 数学 总分 1 小东 90 90 90 270 /2 明明 95 92 90 277 /3 小英 96 89 91 276 /4 小刘 95 90 92 277 /5 小红 95 91 92 278 /要在K1:K3的单元格中分别显示总分最高的同学的班级、姓名、总分/在L1:L3的单元格中分别显示总分第二的同学的班级、姓名、总分 /在M1:M3的单元格中分别显示总分第三的同学的班级、姓名、总分 /注意期中277分的有两人,不要出现第二名与第三名都是"明明"的结果. A: dongmu 定义A2:A6区域为班级 ;定义B2:B6区域为姓名;定义F2:F6区域为总分 K1={INDEX(班级,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))} L1={INDEX(姓名,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))} M1={INDEX(总分,MATCH(LARGE(总分+1-ROW(总分)/100,ROW($A1)),总分+1-ROW(总分)/100,0))}注:只要向下复制,便可得到1~6名的情况了。该公式可以无限排列。 研究彩票,从统计入手 Q:我有一个VBA编程的问题向你请教。麻烦你帮助编一个。我一定厚谢。 有一个数组列在EXCEL中如: 01 02 03 04 05 06 07 /和01 04 12 19 25 26 32 /02 08 15 16 18 24 28 /01 02 07 09 12 15 22/09 15 17 20 22 29 32/比较,如果有相同的数就在第八位记一个数。如 :01 04 12 19 25 26 32 2 /02 08 15 16 18 24 28 1 /01 02 07 09 12 15 22 2 /09 15 17 20 22 29 32 0 .这个数列有几千组,只要求比较出有几位相同就行。 解答:把“01 02 03 04 05 06 07 ”放在表格的第一行,“01 04 12 19 25 26 32 2”放第二行。 把以下公式贴到第二行第八个单元格“A9”中,按F2,再按CTRL+SHIFT+ENTER. =COUNT(MATCH(A2:G2,$A$1:$G$1,0)) 去掉XLS文件头上菜单栏的“MIcrosoft EXCEL ”字样 A: Private Sub Workbook_Open() Application.Caption = "程香宙专用表格" End Sub 替换数据 Q:请教各位如何用将一组数据, 如:6550894, 9852547, 2656032, 7461136, 0505867, 5564892, 7235580,0421077,我需要把数据中的数字1,3,5换为符号A表示,2,4,6换为符号B表示,依此类推将数据中的阿拉伯数字0~9分为几类用其它符号替换。 A: leaf 用VBA处理比较方便。 只用EXCEL函数,感觉代价太大。 假设:B13值为9550894在B14中输入=IF(ISERROR(FIND(MID($B$13,1,1),"135")),IF(ISERROR(FIND(MID($B$13,1,1),"246")),IF(ISERROR(FIND(MID($B$13,1,1),"79")),IF(ISERROR(FIND(MID($B$13,1,1),"80")),"","D"),"C"),"B"),"A"),C14中MID()第二个参数为2,以此类推...最后在目标单元格中输入:=CONCATENATE(B14,C14,D14,E14,F14,G14,H14) dongmu :表一: AB... 11234567890 、2ABABABCCCD 、=SUBSTITUTE(A4,A$1,A$2) 说明:先列一个替换表,如表一,在A4处填如数据,在B4处填如上述公式=SUBSTITUTE(A4,A$1,A$2),并向右拖动9个同样的公式,最后一个便是结果.在将该10个相同的公式向下拖,便得到其它的结果.好处:可以修改表一,产生变化. ACCESS :你可以把全部数据拷贝到WORD中,再用替换命令,想怎么换就怎么换,然后在拷贝回来。 复制数据再转置,不复制转置被隐藏的行或列 解答:选择需要转置的单元区域,按下F5-->定位条件-->可见单元格-->复制-->选择性粘贴-->转置。 如何始终打开默认的工作表 可不可以作到每次保存工作表时,无论保存时是在哪一个 SHEET,但是当下次再打开时,还是原来默认的那张工作表。比如SHEET1。谢谢! 解答: Private Sub Workbook_Open () Worksheets("sheet1").Activate End Sub 如何分割文本 有一列数据,全部是邮箱的,现在想将@前面的账号与@后面的域名分割开,分为两列,如何做? 解答:采用函数分割:例如:A1: [email protected] B1:=LEFT(A1,FIND("@",A1)-1) --> name C1:=RIGHT(A1,LEN(A1)-FIND("@",A1)) --> 163.com 或:数据-分列-分列-分隔符号-@就可以了 两列合一列 现有两列数据A列与B列,我想把B列的数据合并到A列但必须是B1单元格的数放到A1的下面,B2放到A2的下面依此类推,有什么办法呢? 解答:=INDIRECT("r"&INT((ROW()+1)/2)& "c"&MOD(ROW()+1,2)+1,0) 解释: (一)EXCEL表中的列、行样式有两种: 一种标记样式为: 列(字段)以A,B,C,D...... 行(记录)以数值1,2,3,4,5...... 第一列第一行的单元格为A1 另一种标记样式为(取ROW和COLUMN的首位字母): 列(字段)以R1,R2,R3,R4,R5...... 行(记录)以C1,C2,C3,C4,C5...... 第一列第一行的单元格为R1C1 (二)请参阅INDIRECT函数的帮助说明!!! 公式: =INDIRECT("r"&INT((ROW()+1)/2)& "c"&MOD(ROW()+1,2)+1,0) 等同于: =INDIRECT("r"&INT((ROW()+1)/2)& "c"&MOD(ROW()+1,2)+1,FALSE) (三)工具-->选项-->常规-->设置,还可选取R1C1引用样式 每次清除数据时能否作到跳过隐藏的单元格 解答:F5----定位条件----常量----确定----Del 或:F5->定位条件->可见单元格->确定->DEL 也就是单击Sheet2时,在Sheet1的A列的最后一个记录的下一行自动填上“End” 在sheet2: Private Sub Worksheet_Activate () dim i as integer i = Sheets("Sheet1").Cells(1, 1).CurrentRegion.Rows.Count Sheets("Sheet1").Cells(i + 1, 1) = "End" End Sub 用函数将输入的月份转换为这个月所包含的天数 假设A1单元格为月份: =TEXT((DATE(YEAR(NOW()),A1+1,1)-1),"d") 或:=DAY(DATE(YEAR(NOW()),A1+1,0)) 介绍经验:就SUM函数来讲,以下动态地址可行 1.SUM($A$1:A2),SUM(A$1:A2) 2.B2="A9", SUM(INDIRECT("a1:"&B2)) 3.B1="A1",B2="A9" SUM(INDIRECT(B1&":"&B2)) 4.B1="A1:A9" SUM(INDIRECT(B1)) 5.SUM(INDIRECT("A1:"&"A"&ROW()-1)) 6.SUM(INDIRECT("A1:"&ADDRESS(ROW()-1,COLUMN()))) 在EXCEL中如何统计字数 用{=SUM(LEN(范围))}试试 如何自动填充内容 A1:A20是编号,B1:B20是姓名,C1:C20是性别,当我在A21单元格输入A1:A20范围内的任意一个编号时,B21出现对应的姓名,C21出现对应的性别。该如何做,请帮忙。 解答:B21单元格公式“=IF(A21=0,"",VLOOKUP(A21,A1:C20,2,FALSE))”;C21单元格公式“=IF(A21=0,"",VLOOKUP(A21,A1:C20,3,FALSE))”这个公式也适用于A列编号不排序的情况,如果升序的话会更简单一点。 问:以上公式中的'false'有什么用?能否省略? 答:false参数主要是用它以后在A列中的数据可以不是升序排列。不然如果A列不是升序排列,公式会出错的。 工作表的标签的字体和大小可以更改吗 答:在桌面上点右键─内容─外观,相关的设定都在此更改。 自定义格式的体会 在format cell的时候,选了custom后在格子里输入你想要的位数,不变的部分就照着打进去,会变得部分打0就好了,(用0占位)。 例如:你要打的数字是00715834123456,后6位是不定的,那你要打在格子里面00715834000000。这样如果你输入最后3位是012,那么会显示出00715834000012;如果你输入54321,那么会显示出00715834054321。 如果你会变得部分是在数字的中间,比如我的item#会是9690000001-0000002,后面的-0000002是不变的,那我就可以设置自定义格式为9690000000"-0000002",这样当我键入502的时候就会显示9690000502-0000002。 再次显示出被隐藏掉了的行(第1行) 1: 选中隐藏的上、下行,右击鼠标,选“取消隐藏”(作者注:此法可行) 2:Ctrl+A-----格式-----行-----取消隐藏(可以,能够一次显示所有隐藏的行或列) 3:另一法(工作表处于未保护状态):假如 A1 被隐藏了在名称框中键入A1,回车按 Ctrl+Shift+0 或 Ctrl+Shift+9(只显示选定的隐藏列或行) 4:光标移到行号 4 上部变成 上下箭头状, 按住了, 拖也要把它拖出来!(慢,不好操作) 5:选择整个工作表(点击左上角),然后再选择菜单中的行,选择最适合的行高,然后就OK!,同样可以把隐藏的列显示出来。(这个办法最好,能够一次显示所有隐藏的行或列) 如何定义有效数字 例:取两位有效数是从第一个不是零的数字起,取两位。0.0023666取两位有效数是0.0023 。0.2366取两位有效数是0.23。 解答:用函数可如下: =FLOOR(A1, SIGN(A1)*10^(INT(LOG(ABS(A1)))-1)), +/- 小数有效,0无效. 其它形式的数据, 自行扩展. sheet1工作表的A1、A2、A3单元格分别链接到sheet2、sheet3、sheet4 解答:1、 =indirect("sheet"&row()+1&"!a1")《程香宙的解释:indirect是把文本变为单元格引用的函数row()是取当前行号。例如在a1输入该公式,则row()=1,公式里的值变为indirect("sheet2!a1"),跟=sheet2!a1同效,在a2输入该公式,则row()=2,公式里的值变为indirect("sheet3!a1")》 2、使用插入----超级链接----书签----(选择)----确定 用SUMIF函数进行条件求和,不限于一个条件时如何设置参数 例如:有一个表格登记面粉、米粉、糯米、梗米、绿豆、早米……等等的进出流水帐,如果对满足单一条件的如面粉、糯米、绿豆等分别求和是没有问题的,但如果要将同一类的求和,例如将糯米、梗米、早米的数值加在一起,应该怎么办? 解答:提供以下公式供参考,设A列为名称、B列为数量: =SUMIF(A:A,"糯米",B:B)+SUMIF(A:A,"梗米",B:B)+SUMIF(A:A,"早米",B:B) 如B1:D1为求和条件项,即B1="糯米",C1="梗米",D1="早米", 上述公式还可改为: =SUMIF(A:A,B1,B:B)+SUMIF(A:A,C1,B:B)+SUMIF(A:A,D1,B:B) 如何在excel中已有的数值前加零变成六位 比如说 25、369、1569等,操作后变成000025、000369、00156 解答:如果直接输入的话,可以在数值前面加“'”,如“'002020”; 如果处理现成的数据,或者从别处(比如从A1单元格)链接来的数据,可以用公式: =RIGHT("00000"&A1,6) 如何提取工作表中的背景图片 解答:找个干净的地方, 去掉网纹等不需要的东西, PrintScreen 再编辑 绘制有三条斜线的表头 解答:1、用绘图工具画出斜线>>画方框>>内添加文字>>去边框 2、引用WORD中的,然后再复制过来就可以! 在A列有一组数据不是按照大小顺序排列在B列中排名 解答:方法1、将A列COPY到B列,再排序。 2、rank函数(=RANK(A2:A11,$A$2:$A$11,0)(假设数据在A2:A11单元格,下同) 3、使用contif函数进行排列“=countif(a$2:a$11,">"&a2)+1" 有无办法让B2所在行都呈红色字体 解答:假设你有一个B列和一个A1的值,你的目的是,如果B2=A1的话,整个B列都为红色显示! 设置如下:先选定整个b列,也就是在B列列标处单击(废话~^_^),选择格式-条件格式 出现条件格式对话框,单击左边的下拉列表,里面只有两项,单元格数值和公式,选中公式,右边就可以输入任何可以返回逻辑值的公式了。输入这个公式=($B$2=$A$1)。千万注意要用绝对引用,因为如果是相对的,excel又自作主张的一个一个判断了,就没有作用了。(绝对正确并且好用) 现有12个工作表,是12张发票,建立一个汇总表,将发票号和金额汇总显示在一张表里 (发票号和金额在每张表的相同位置). 解答:在A1输入 =INDIRECT("sheet"&ROW()&"!d3") 在B1输入 =INDIRECT("sheet"&ROW()&"!d10") 再选择A1:B1往下复制到第12行。 经验技巧 按“Ctrl+~”可以一次显示所有公式(而不是计算结果)。再按一次回到计算结果。(程香宙) 在一个不对称的区域中如(b1:G7)中找到A行一组数据中的某个数并自动变红 解答:其实也很简单,你只要选定你的b1:g7,设置它的条件格式为=(COUNTIF($A$1:$A$7,b1)) 注意,b1为相对引用,这里输入所选区域的第一个取值,那样你的所选区域会自动填充.达到你要的效果。(好) 不借助第三列而直接用函数或公式一步得到sum(a2/b2,a3/b3,…)的结果 解答:输入=sum(a1:a100/b1:b100),按ctrl+shift+Enter。 请问要如何算出每个月有几个星期一、二、三….日 解答:为简单起见,表格需作一下调整,将 "星期日" 移到 C1,其后依次,这也符合规则(请参阅函数: WEEKDAY()). 。在 C2 键入数组公式: {=SUM(IF(WEEKDAY(DATE($A2,$B2,ROW(INDIRECT("$A$1:$A$" & DAY(DATE($A2,$B2+1,1)-1)))))=COLUMN()-2,1))},向右复制、向下复制。公式解释一点:ROW(INDIRECT("$A$1:$A$" & DAY(DATE($A2,$B2+1,1)-1)))实际上是从 1 号测试到本月的最后一天.如需要,公式可再作精简。 让隐藏的列或行不参预计算 解答:使用subtotal函数,详细用法参见帮助。 一次删完Excel里面多出很多的空白行 解答:1、用分面预览看看 2、用自动筛选然后删除 3、用自动筛选,选择一列用非空白,空白行就看不到了,打印也不会打出来。但是实际上还是在的,不算删除。或者用自动筛选选择空白将空白行全显出来一次删完也可以。 4、先插入一列,在这一列中输入自然数序列,然后以任一列排序,排序完后删除数据后面的空行,再以刚才输入的一列排序,排序后删除刚才插入的一列。 表1、表2分别有20个人的基本情况和其中10个人的名字,让表1的数据自动填充到表2 答:1、用lookup函数即可。要保证20人不重名; 2、假设表1的D列对应表2的E列。E2的公式:=VLOOKUP(B2,Sheet1!B:D,3,FALSE) 使用vlookup函数返回#N/A符号时将此符号用0或空格来代替 答:这样处理: =IF(ISNA(VLOOKUP(C13,A1:B10,2)),0,VLOOKUP(C13,A1:B10,2)) 或:IF(ISERROR(vlookup(a1,e1:g10,2,0)),0,vlookup(a1,e1:g10,2,0))。 通过条件格式将小计和总计的行设为不同的颜色 答:输入=RIGHT(RC,1)="计";设定字体、边框、图案;确定。 复制隐藏后的表格到一个新表格中使被隐藏的内容不显示 答:crtl+g-选可见单位格-复制-粘贴。 如何将一个工作簿中的一个Sheet隐藏 答:1、选“格式”---“工作表”----“隐藏” 2、使用VBA这样隐藏后在使用工作表保护。 Alt+F11----Ctrl+G----出现立即执行窗口,在此窗口内执行 Sheet1.Visible = xlSheetVeryHidden 这样隐藏后sheet在格式---工作表----取消隐藏是看不见的。 问:方法2更好哦,如何恢复呢? 答:sheet1.Visible =xlSheetVisible 工具菜单与视图中的工具栏不同 屏蔽工具菜单宏 sub notool() MenuBars(xlWorksheet).Menus("工具").Delete end sub 解除屏蔽 sub yestool() MenuBars(xlWorksheet).reset end sub Alt+F11 进入VBA 编辑、插入模块、将上面宏复制到模块、运行宏。OK 查找并填写符合条件的单元格内容 我在工作中需快速复制每行多个数据(单元格)中最小值所对应的“标题名”,如E6是C6:Y6中的最小值,所对应的标题是E5单元格“某某公司”,要将其(某某公司)复制到B6单元格中,以此类推的复制很多很多行的内容。如果是手工一个一个查找与复制,实在是太慢太笨了,能否使用一个简单的公式计算呢? 答:B6单元格"=INDEX(C$5:Y$5,MATCH(MIN(C6:Y6),C6:Y6,0))" 填写空白行 我有个同事在一张空白表依次输入数据,为了省事她把和上一格内容相同的的省略不输,输了近200行。后来又觉得不够正式,想把空白的地方补上。她来问我怎么办好。当然依次填充也行,但我觉得烦(如果有2000行怎么办呵呵)我想了一个不是办法的办法:在A列和B列旁各插入一列,现在就有ABCDE列,我在B2中复制了A2中的内容,然后在B3中输入公式:IF(A3=0,B2,A3),然后往上往下复制公式。这样就填满了。如法炮制D列后隐藏AB列感觉就可以了。可是也烦啊,谁有更好的办法? 答:1、Sub feifjeifjeifjeifjeifjiefjiejfiejf() For i = 2 To ActiveSheet.Range("a1").CurrentRegion.Rows.Count If IsEmpty(Cells(i, 1)) Then Cells(i, 1).FormulaR1C1 = Cells(i - 1, 1).Value End If Next End Sub 2、筛选出空白行,输入公式=INDIRECT("a"&ROW()-1),填充 制订下月计划并显示为中文 我在五月份做六月份的计划,为减少工作量和更改的麻烦,我做模板并使用了公式="计划期:"&YEAR(NOW())&"年"&(MONTH(NOW())+1)&"月",结果如A1所示 计划期:2002年6月(现在的系统日期是2002年5月)。 如果我想自动得到如A2中的结果 计划期:二○○年六月 ,请问要如何做才行,我设置了单元格的日期格式还是不行。 解答:1、先设置单元格格式为"二○○二年六月"那种类型,然后用如下公式:=DATE(YEAR(NOW()),(MONTH(NOW())+1),20)就可以了。 2、使用这个函数吧! =EDATE(NOW(),1)。单元格格式应设置为:日期----一九九七年三月。 3、设置单元格格式为:[DBNum1]"计划期:"yyyy"年"m"月" ,然后直接输入日期值(如2002/11)即可。 输入公式也可以。如=today()+30,可以得到下个月的月份。 &的用法 有E44单元格,我希望 总计:=SUM(E45:E49) 就是想让它经过自动求和后在一个单元格内显示总计:120 。 解答:有多种方法实现,详细如下: 1、="总计:"&sum(e45:e49) 2、把E44格式设为"总计:"#0.00;"总计:"-#0.00;"总计:"0.00;@ 3、将E44单元格格式自定义为 "总计:"0.000 即可,方便对E44的引用计算 4、=CONCATENATE("合计:",SUM(e45:e49)) 有5行数据在每行上面个插入1行 解答:1、在最左边插入一列,然后输入1、2、3、4、5、1、2、3、4、5,并以此列进行排序,在第一行上面再插入一行,删除刚刚插入的列。 2、使用Ctrl+鼠标一行一行选定,然后插入行。 3、sub 插入行() for i=1 to 6 if cells(i,1).value <> Cells(i + 1, 1) And Cells(i, 1) <> "") Then Rows(i + 1).Insert end if next i end sub 可以检查一张表里是否有漏重的数字吗 答:漏值:{=IF(SUM((R1C1:R10C4="")*1)>0,"有漏值","无漏值")} 重复值:{=SUM(SUM((漏值!R1C1:R10C4=漏值!RC)*1))} {=IF(MAX(R1C1:R10C4)>1,"有重复值","无重复值")} 使用下面公式更方便: 找重复值-------{=IF(SUM((COUNTIF(R1C1:R10C4,R1C1:R10C4)>1)*1)>1,"有重复值","无重复值")} 找 漏 值-------{=IF(SUM((R1C1:R10C4="")*1)>0,"有漏值","无漏值")} 注意:这两个公式均为数组,输入时应同时按Ctrl+Shift+Enter。 怎样将单元格中的公式转换为数值 解答:选中公式的一部分,按F9键 条件求和 有这样一个表格 A B C 1 2 3 /2 2 3 /3 2 3 /4 2 3 /5 2 3/6 2 3 /如何才能求出满足A列中大于2且小于5的B列和C列数值的和,要求B列和C列的值相加。用sumif函数似乎条件中只能设定为>2,而不能同时设定<5,而且在求和时只能B列相加,不能把B列和C列满足条件的值加起来。这个问题能不能只用函数,不用数组公式解决。请各位指教。 解答:1用公式:=SUM(IF(($A$1:$A$6>2)*($A$1:$A$6<5),B1:C6)) 2用数组公式:{=SUM(IF($A$2:$A$7>2,IF($A$2:$A$7<5,$B$2:$B$7,0),0))+SUM(IF($A$2:$A$7>2,IF($A$2:$A$7<5,$C$2:$C$7,0),0))} A1单元格为出生日期,可用=DATEDIF(A1,NOW(),"y")计算其年龄 这个公式是什么意思?K7=if(AND(R7>3000, Q7>0.5), "", P7) 意思是:如果R7单元格中的数值大于3000,并且Q7单元格中的数值大于0.5,则在K7单元格中显示空白,否则显示出P7单元格中的数据。 统计数据问题一例 各位朋友,如果我想统计50个数据中大于某个值的数据个数,(这个值是在使用时才输入某个单元格的),请问用什么函数,如何实现,谢谢。 如数据单元格为A1:E10,值的单元格为A11。 答:1、使用下面的数组公式: {=SUM(IF($A$1:$E$10>$A$11,1))} 2、输入以下函数: =COUNTIF(A1:E10,">"&A11) 关于条件求和问题! 有A,B,C,三列数据,如果A列符合要求,求B1*C1+B2*C2+......? 答:使用数组公式: {=SUM((R2C1:R13C1="ab")*(R2C2:R13C2)*(R2C3:R13C3))} 请教关于条件乖积的求和问题 A列为部门名称,B列为姓名,C列为日工资额(如20.00),D列为月出勤天数,我想在另一汇总表中汇总出各部门员工月工资总额(即:相应部门对应的C*D之和)。请问如何解决? 解答:1、=SUM((A4:A10="甲部门")*(C4:C13)*(D4:D13)) 假设你的a列存放部门名称,你的b列存放员工姓名,C列存放日工资,D列存放天数。 计算“甲部门”的工资总额。 注意,这是数组公式,输入完毕后按ctrl+shift+回车 问:我试着把区域引用改为整列,出现错误,请指点! =SUM((date!A:A="甲部门")*(date!E:E)*(date!F:F)) 答:经试验,不能用整列方式, 你可以适当的调整一个比较大的区域如a2:a100 a1为标题行 因为如果参与计算的e列和f列区域出现文本,也会发生错误。一定要把计算区域的标题行去掉,并且保证不再数值区域出现文本。 =SUM((date!A2:A100="甲部门")*(date!C2:C100)*(date!D2:D100)) 这个公式没有错误 文件修复 Excel文件是一个工作簿,一般可以包含255个工作表,每个工作表中可以包含大量的数据。如果一个Excel文件部分受损,不能正常打开,该怎么办呢?这里向大家介绍两种解救方法。 手动处理 进入Word,打开要修复的XLS文件,如果Excel只有一个工作表,会自动以表形式装入Word,若文件是由多个工作表组成,每次只能打开一个工作表。打开后,先将文件中损坏的数据删除。 用鼠标选中[表格]→[转换]→[表格转文本],注意可用“,”间隔符或其它分隔符,另存为一个TXT文本文件。在Excel中直接打开该文本文件,在打开时,Excel会提示文本导入向导,一般情况下只要直接点击[下一步]即可,打开后另存为其它的Excel文件即可。 注意:这种修复的方法是利用Word的直接读取Excel文件的功能实现,该方法在文件头没有损坏,只是文件内容有损坏的情况下比较有效;对文件头已经损坏的Excel文件,此方法可能不成功,必须借助于其它方法。 用Excel修复工具 Concept Data公司提供了一个专门用于修复Excel损坏文件的修复工具——ExcelRecovery,能够对Excel 5.0/97/2000的文件进行恢复处理,大家可以先下载该软件的免费演示版试用,仅有674KB,下载地址http://download.sina.com.cn。软件安装后,可以自动将Excel的修复程序加在Excel应用程序中,在“文件”菜单下多出一项“Recovery”选项,若有损坏的文件,可以用该选项进行修复。另一个下载地http://www.skycn.com/soft/7432.html 使用方法是: 1、打开Excel; 2、单击“文件”菜单下的“Recover”选项,Excel Recovery对话框将打开 3、指定要修复的Excel文件,然后按[Recover]按钮; 4、自动修复; 5、另存为一个新的文件名,即可完成文件的修复工作。 注意:该演示版本只能修复普通文件,不能修复带Visual Basic代码、图表以及包含口令的Excel文件,如果需要修复这些文件,请进行注册。 另外要提醒大家的是:保存在软盘中的文件极易损坏,受损后可用以上方法修复,但如果损坏的文件位于磁盘0磁道时,就必须先修复软盘,再用上述方法修复Excel文件。 另外,考虑到未注册版本的使用限制,我找到如下破解页面,你自己再研究研究 Results 4 of about ExcelRecovery URL: http://www.cracks.am/cracks/e4.html • ExcelRecovery v3.0 • ExcelRecovery v2.2 URL: http://www.thecrack.net:8080/db/list.php... • 2064. ExcelRecovery 2.2 12 Kb • 2065. ExcelRecovery 2.2.1 12 Kb • 2066. ExcelRecovery v3.0 (SirCrack) 12 Kb URL: http://crck.passwd.ws/e.htm • ExcelRecovery v3.0 - 11 Kb URL: http://cracks.allseek.info/crc/?p=E5 • 1255. ExcelRecovery 3.0 by SirCrack [ 11 Kb ] 显示隐藏的工作表 有个朋友给了我一个EXCEL程序,里面只有2个SHEET,但是我见到其中一个SHEET还引用了本文件另外一个工作表的内容,我用ALT+F11打开VB编辑器又可以看到那个隐藏了的工作表, 请问怎么能看到那工作表呢? 答:Sheets("name_of_sheet").Visible = True 这样一列如何筛选出含201的 县一高2014555 /便民201号 /县城301号/201414441/301745555/20145122 /柏良201 /柏良301 答:假设你的资料在B列,且起始行为第四行,即B4起始单元格,终止与11行处,即B11,则在A列输入公式IF(ISERROR(FIND("201",B4)),A3,A3+1),然后在D列输入顺序数字,比如1到10,在E列输入公式vlookup(d4,$a$4:$b$11,2,1>2)。注意A3为0。或:自动筛选->单击下拉列表->custom(自定义)->在条件中选"包含",在右边的文字框输入"201"->OK 两个日期相差的月份数 使用Datedif(日期1,日期2,"m")函数。 用函数实现连续相加 我有一公式是这样的:=sum(B1+B2+B5+B8+B11+B14+B17+B20) 也就是前两个是连续相加,后边的是每隔3个相加,不知有没有简单的公式。 答:{=SUM((MOD(ROW(B1:B20),3)=2)*B1:B20)+B1} 把计算结果为负值的显示为红色取整并在数字后面加上“仟元“ 把单元格格式改为#,##0"仟元";[红色]-#,##0"仟元" 如果不要负号可以写成#,##0"仟元";[红色]#,##0"仟元" 比较A、B两列数据并在A列中包含B列的数据删除 工作表中A列数据是原始数据,而B列是另一些数据,现在要比较两列的情况,然后将A列中包含B列的数据删除 Sub wswx0041() Dim i&, j& On Error Resume Next For j = Range("B65536").End(xlUp).Row To 1 Step -1 For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Cells(i, 1) Like "*" & Cells(j, 2) & "*" And Not IsEmpty(Cells(j, 2)) Then Cells(i, 1).Delete shift:=xlUp Next i Next j End Sub 怎样让我的图表随着数据透视表的更新 我的问题是: 1、当有新月份的数据出现的时候,图表无法包含新数据;2、但REGION选择不是全部,比如CD,图表中没有数据。怎样实现图表随数据透视表的更新而更新呢? 解答:DATA=Data!$A$1:$G$129、固定的范围,不值钱、DATA=OFFSET(Data!$A$1,,,COUNTA(Data!$A:$A),6) 动态范围、按数据透视表[!]按钮,更新数据 Sales Date;改用年月日三个字段;目的是当[索引],让条件容易下;DATA=OFFSET(Data!$A$1,,,COUNTA(Data!$A:$A),8)。 直接由[数据透视表]工具,[图表精灵]出,[图表] 如此就是完美的三层式结构,分工完成工作,只不过是接条龙,很简单吧! 又问:每次刷新数据,列宽等格式就需要重调,有没有办法将格式固定住? 答:工具>>选项>>一般>>标准字型>>大小>>确定。设定好以后,开新档案,列宽行高自动会调整。但这不是重点 [数据透视表];鼠标右键>>分页显示。此功能是用来打印整本活页簿,出报表用 双击总计字段下之单元格;此功能是用来列出该笔合并数据所有明细;所以[自动筛选][进阶筛选]就用不着了,也不必去写复杂之[数组公式];需要甚么数据,直接找[数据透视表]要;操作非常简单 DATA可以转到mbd檔;ACCESS可以汇入Excel数据,用精灵操作;汇入以后xls档即可删除 Excel>>数据>>取得外部数据>>新增外部数据查询>>>>>>转入[数据透视表];此物即为Microsoft Query 第一次使用会要求放入光盘片,安装ODBC驱动程序 改用年月日三个字段;是有道理的。别嫌麻烦 循环引用问题 vba中输入公式,我想用变量代替RC地址,以便循环操作,如何做到?比如:在Range("am6").FormulaR1C1 = "=SUM(R[-5]C:R[-5]C[10])"中,如何才能用变量x来代替其中的10或-5等数字? 解答:="=SUM(R[" & x & "]C[" & y & "]:R[" & xx & "]C[" & yy & "])" 如何才能有条件的引用某一区的内容 请教各位,怎样才能引用符合条件的某一区域的内容。如下: A B C 9-1 1 9-15 /9-2 2 9-16 /9-2 2 9-17 /9-2 1 9-18 /9-4 2 9-18 请问,用什么方法才能在另外的单元格中引用同时符合A列中“9-2”和B列中“2”的C列的内容。 解答:先判断个数,再列出符合的数据: {=IF(ROW()-ROW($A$18)+1>SUM(($A$2:$A$7=$B$16)*($B$2:$B$7=$C$16)),"",TEXT(SMALL(IF(IF($A$2:$A$7=$B$16,$B$2:$B$7,"")=$C$16,$C$2:$C$7,""),ROW($A1)),"m月d日"))} Excel基本功 1.引用同一工作薄中另外一工作表的单元格 = Worksheets("工作表名称").Cells(1, 1) ------------------------------------------------------------ 如当前工作表为sheet1,想引用sheet2中的B2,则=sheet2!B2 2.如何使0值不显示 方法1:if (A1<>"", A., "") 方法2:对于整个工作表中的0值全不显示,[工具]-[选项]-[视图],清除0值选项。 方法3:用自定义数字格式,其中"#"和"?"有屏蔽0值的效果。比如:"G/通用格式;G/通用格式;#","G/通用格式;G/通用格式;?"。 3.如何定义格式和Copy格式? 在EXCEL中,可不可以把某一范围定义成一种格式,而其中某些数据又不是.并且又如把这种格式COPY到同一张sheet1中?如: 大制程 标准工时 状况 2002/1/24 2002/1/25 二次 13 /焊接 20 .而其它空格就不包括在格式中.被填写了的这张表格的格式又能重新COPY.如何做呢? 解答:新建一个只有一个工作表的工作簿 ,在这个工作表中设计你的格式另存为模板(*.xlt)。以后插入新工作表时,选择刚才建的模板。 又问:但是假如我只有一张工作表,我如何在同一张工作表中COPY呢?如我的固定格式在sheet1的A1:Z15范围内,我要把这种格式copy到A17:Z24,而其中的数据又不COPY进来.怎么办? 解答:假设你要复制格式的范围为A1:Z1和A1:B15两个区域,则用下面的宏能实现你的复制要求。 你只要选定新区域左上角的单元格,然后执行宏即可。 Sub 宏1() aaa = ActiveWindow. RangeSelection.Address Range ("A1:Z1").Select Selection.Copy Range (aaa).Select ActiveSheet.Paste Range ("A1:B15").Select Application.CutCopyMode = False Selection.Copy Range (aaa).Select ActiveSheet.Paste Application.CutCopyMode = False Range (aaa).Select End Sub ------------------------------------------------------------ 如果A1:Z15中的数据全部都要清除, 可以[复制]A1:Z15,[选择性粘贴]到A17,粘贴栏中选中"格式"。 ------------------------------------------------------------ 选定范围后直接使用格式刷就可以了 4.如何实行列互换? 解答:Transpose函数 或选中一行或一列,复制,选择性粘贴->转置。 ------------------------------------------------------------ 在某一单元格输入公式“INDEX(reference,COLUMN(A1),ROW(A1))” 然后向下向右拖放。 5.EXCEL2000中视面管理器如何具体运用呀? 请问高手EXCEL2000中视面管理器如何具体运用呀? ------------------------------------------------------------ 其实很简单呀,你把它想象成运动场上的一串照片(记录不同时点的场景), 一张照片记录一个场景,选择一张照片就把运动“拖”到照片上的时点。 不同的是只是场景回复,而值和格式不回复。 解除officeXP 50 次限制 1、 首先使用下面这个序号来安装Office XP。 BMV8D-G272X-MHMXW-4DY9G-M8YTQ 2、安装后,启动新建一个Word文档,程序会提示你激活,不管它!关闭Word。 3、打开注册表编辑器REGEDIT.exe,进入到下面的子键里面: [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Installer/Products/4080820900063D11C8EF00054038389C/Always Installed] 4、把右边的这个DWORD类型的键删除:"Usage"=dword:2adb0001 5、在右边新建这样一个字符串型的键:Usage,将其值改为AlwaysInstalled 即: Usage="AlwaysInstalled" 6、最后使用法国人写的字节数为12,800的Crack.exe来破解Office XP后,即大功告成! 我破解后,打开Word 70次,打开Excel 60次后,还是能够新建文档、表格,而且可以顺利保存。 无论Win98或Win2000操作系统我都成功了,且已运行了200次以上! 小写数字转换成人民币大写 方法1、 Function UNumber(LNumber As Double) Dim NumberStr$ Dim NumberLen% Dim DotLoc1% Dim DotLoc2% Dim NumberStr1$ Dim NumberStr2$ If LNumber = 0 Then UNumber = "零元整" Exit Function End If NumberStr = Application.WorksheetFunction.Text(LNumber, "[DBnum2]") NumberLen = Len(NumberStr) DotLoc1 = InStr(1, NumberStr, ".", vbTextCompare) DotLoc2 = NumberLen - DotLoc1 If DotLoc1 = 0 Then NumberStr = NumberStr & "元整" Else NumberStr = Replace(NumberStr, ".", "元") If DotLoc2 = 2 Then NumberStr = NumberStr & "分" If Mid(NumberStr, DotLoc1 + 1, 1) <> "零" Then NumberStr1 = Mid(NumberStr, 1, DotLoc1 + 1) & "角" NumberStr2 = Right(NumberStr, 2) NumberStr = NumberStr1 & NumberStr2 End If Else NumberStr = NumberStr & "角整" End If End If On Error Resume Next UNumber = Replace(NumberStr, "零元", "") End Function 方法2、 =IF(TRUNC(H16)=H16,TEXT(H16,"[DBNum2]G/通用格式")&"元整",TEXT(TRUNC(H16),"[DBNum2]G/通用格式"&"元"))&IF(AND(TRUNC(H16)<>H16,RIGHT(TRUNC(H16*10))<>"0"),TEXT(TRUNC(MOD(H16*10,10)),"[DBNum2]G/通用格式")&"角","")&IF(AND(RIGHT(TRUNC(H16*10))="0",TRUNC(H16)<>H16),"零","")&IF(TRUNC(H16*10)<>H16,TRUNC(H16*10)=H16*10), "整","") 方法3、 =IF(F10=0,"",CONCATENATE(IF(INT(F10)=0,"",TEXT(INT(F10),"[DBNum2]G/通用格式元")),IF(INT(MID(RIGHT(FIXED(F10,2,1),2),1,1))=0,IF(INT(MID(RIGHT(FIXED(F10,2,1),1),1,1))=0,"",IF(INT(F10)=0,"","零")),TEXT(INT(MID(RIGHT(FIXED(F10,2,1),2),1,1)),"[DBNum2]G/通用格式角")),IF(INT(MID(RIGHT(FIXED(F10,2,1),1),1,1))=0,"整",TEXT(INT(MID(RIGHT(FIXED(F10,2,1),1),1,1)),"[DBNum2]G/通用格式分")))) 方法4、 人民币大写的函数公式,可正负,最多两位小数。 =IF(A1<0,"负","")&IF(TRUNC(A1)=A1,TEXT(IF(A1<0,-A1,A1),"[DBNum2]")&"元整",IF(TRUNC(A1*10)=A1*10,TEXT(TRUNC(IF(A1<0,-A1,A1)),"[DBNum2]")&"元"&TEXT(RIGHT(A1),"[DBNum2]")&"角整",TEXT(TRUNC(A1),"[DBNum2]")&"元"&IF(ISNUMBER(FIND(".0",A1)),"零",TEXT(LEFT(RIGHT(A1,2)),"[DBNum2]")&"角")&TEXT(RIGHT(A1),"[DBNum2]")&"分")) 方法5 修改一下4:根据剑魔兄的测试,发现有一个问题,如-100.05,现修正如下: =IF(A1<0,"负","")&IF(TRUNC(A1)=A1,TEXT(IF(A1<0,-A1,A1),"[DBNum2]")&"元整",IF(TRUNC(A1*10)=A1*10,TEXT(TRUNC(IF(A1<0,-A1,A1)),"[DBNum2]")&"元"&TEXT(RIGHT(A1),"[DBNum2]")&"角整",TEXT(TRUNC(IF(A1<0,-A1,A1)),"[DBNum2]")&"元"&IF(ISNUMBER(FIND(".0",A1)),"零",TEXT(LEFT(RIGHT(A1,2)),"[DBNum2]")&"角")&TEXT(RIGHT(A1),"[DBNum2]")&"分")) 方法6 =IF(A1<0,"负",)&TEXT(TRUNC(ABS(A1)),"[DBNum2]G/通用格式")&"元 "&IF(ROUND(A1,3)=ROUND(A1,),"整",TEXT(RIGHT(TRUNC(A1*10),1),"[DBNum2]G/通用格式")&"角"&IF(ROUND(A1,3)=ROUND(A1,1),"整",TEXT(RIGHT(ROUND((A1*100),),1),"[DBNum2]G/通用格式")&"分")) 方法7 无条件舍去: =CONCATENATE(IF(A1<0,"负",""),TEXT(IF(TRUNC(A1)=0,"零",TRUNC(ABS(A1))),"[DBNum2]")&"元",IF(OR(AND(ABS(A1)<0.1,TRUNC(A1)=A1),RIGHT(INT(ABS(A1)*100),2)="00"),"",TEXT(RIGHT(TRUNC(A1*10),1),"[DBNum2]")),IF(RIGHT(TRUNC(A1*10),1)="0","","角"),IF(OR(TRUNC(A1*10)-(A1*10)=0,RIGHT(TRUNC(A1*100),1)="0"),"整",TEXT(RIGHT(TRUNC(A1*100),1),"[DBNum2]")&"分")) 小数点后两位四舍五入: =CONCATENATE(IF(A1<0,"负",""),TEXT(IF(TRUNC(ROUND(A1,2))=0,"零",TRUNC(ABS(ROUND(A1,2)))),"[DBNum2]")&"元",IF(TRUNC(ROUND(A1,2))=ROUND(A1,2),"",TEXT(RIGHT(TRUNC(ROUND(A1,2)*10),1),"[DBNum2]")),IF(RIGHT(TRUNC(ROUND(A1,2)*10),1)="0","","角"),IF(OR(TRUNC(ROUND(A1,2)*10)-(ROUND(A1,2)*10)=0,RIGHT(ROUND(A1,2),1)="0",TRUNC(ROUND(A1,2))=ROUND(A1,2)),"整",TEXT(RIGHT(ROUND(A1,2),1),"[DBNum2]")&"分")) 方法8 无条件舍去: =IF(A1<0,"负","")&SUBSTITUTE(TEXT(TRUNC(A1),"[DBNum2]")&"元"&IF(ISNUMBER(FIND(".",TRUNC(A1,2))),TEXT(RIGHT(TRUNC(A1*10)),"[DBNum2]")&IF(ISNUMBER(FIND(".0",A1)),"","角"),"")&IF(LEFT(RIGHT(TRUNC(A1,2),3),1)=".",TEXT(RIGHT(TRUNC(A1,2)),"[DBNum2]")&"分","整"),"-",) 小数点后两位四舍五入: =IF(A1<0,"负","")&SUBSTITUTE(TEXT(TRUNC(ROUND(A1,2)),"[DBNum2]")&"元"&IF(ISNUMBER(FIND(".",ROUND(A1,2))),TEXT(RIGHT(TRUNC(ROUND(A1,2)*10)),"[DBNum2]")&IF(ISNUMBER(FIND(".0",ROUND(A1,2))),"","角"),"")&IF(LEFT(RIGHT(TRUNC(ROUND(A1,2),2),3),1)=".",TEXT(RIGHT(ROUND(A1,2)),"[DBNum2]")&"分","整"),"-",) 方法9 再简化如后,请大家试试。 无条件舍去: =IF(A1<0,"负","")&TEXT(TRUNC(ABS(A1)),"[DBNum2]")&"元"&IF(ISERR(FIND(".",TRUNC(A1,2))),"",TEXT(RIGHT(TRUNC(A1*10)),"[DBNum2]"))&IF(RIGHT(TRUNC(A1*10))="0","","角")&IF(LEFT(RIGHT(TRUNC(A1,2),3))=".",TEXT(RIGHT(TRUNC(A1,2)),"[DBNum2]")&"分","整") 小数点后两位四舍五入: =IF(A1<0,"负","")&TEXT(TRUNC(ABS(ROUND(A1,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A1,2))),"",TEXT(RIGHT(TRUNC(ROUND(A1,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A1,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A1,2),3))=".",TEXT(RIGHT(ROUND(A1,2)),"[DBNum2]")&"分","整") 方法10(好) Function RMB_DX(money As Variant) Dim m1 As Long, n1 As Long, n2 As Integer, n3 As Integer m1 = Application.WorksheetFunction.Round(money * 100, 0) n1 = Int(m1 / 100) n2 = Int(m1 / 10) - n1 * 10 n3 = m1 - n1 * 100 - n2 * 10 If n3 = 0 Then RMB_DX = "整" Else RMB_DX = Application.WorksheetFunction.Text(n3, "[DBnum2]") & "分" End If If n2 = 0 Then If n1 <> 0 And n3 <> 0 Then RMB_DX = "零" & RMB_DX Else RMB_DX = Application.WorksheetFunction.Text(n2, "[DBnum2]") & "角" & RMB_DX End If If n1 <> 0 Or m1 = 0 Then RMB_DX = Application.WorksheetFunction.Text(n1, "[DBnum2]") & "元" & RMB_DX End If End Function 方法11 unction rmbdx(value, Optional m = 0) '支持负数,支持小数点后的第三位数是否进行四舍五入处理 '默认参数为0,即不将小数点后的第三位数进行四舍五入处理 'redwin增改 2002-10-11 'Application.Volatile True On Error Resume Next Dim a If value < 0 Then a = "负" Else a = "" End If '当参数m不输入(默认为0)或为0时,小数点后的第三数不进行四舍五入处理 '当参数m为1或其它数值时,小数点后的第三数进行四舍五入处理 value = CCur(Abs(value)) If m = 0 Then value = Fix(value) + (Fix((value - Fix(value)) * 100)) / 100 Else value = Round(value, 2) End If strrmbdx = Application.WorksheetFunction.Text(Int(value), "[DBNum2]") & "元" '防止出现零元的bug! If value >= 1 Then strrmbdx = strrmbdx Else strrmbdx = "" End If strBal = Str(value) If Int(value) <> value Then strLastvalue = Left(Right(strBal, 2), 1) If strLastvalue = "." Then strLastvalue = Right(strBal, 1) strLast = Application.WorksheetFunction.Text(strLastvalue, "[DBNum2]") & "角整" Else If strLastvalue = "0" And strLastvalue <> "0" Then strLast = "零" Else '防止出现零角几分的bug! If strrmbdx = "" And strLastvalue = "0" Then 'strLast = Application.WorksheetFunction.Text(strLastvalue, "[DBNum2]") & "角" strLast = "" Else If strrmbdx <> "" And strLastvalue = "0" Then strLast = "零" Else strLast = Application.WorksheetFunction.Text(strLastvalue, "[DBNum2]") & "角" End If End If End If strLastvalue = Right(strBal, 1) If strLastvalue = "0" Then strLast = "整" Else strLast = strLast & Application.WorksheetFunction.Text(strLastvalue, "[DBNum2]") & "分" End If End If strrmbdx = strrmbdx & strLast Else strrmbdx = strrmbdx & "整" End If rmbdx = a & strrmbdx End Function 方法12 =IF(ISTEXT(C2),"","人民币:"&TEXT(INT(C2),"[dbnum2]")&"元"&IF(INT(C2*10)-INT(C2)*10=0,"",TEXT(INT(C2*10)-INT(C2)*10,"[dbnum2]")&"角")&IF(INT(C2*100)-INT(C2*10)*10=0,"整",TEXT(INT(C2*100)-INT(C2*10)*10,"[dbnum2]")&"分")) ……还有很多方法编者没有收集。 中国式的排名 函数应用 RANK 是个排名函数 但有一个问题象上面有两个100分 也就是两并列第一 排名就从第三名开始没有第二名 也许这个美国式的排名 中国式的排名 前面有两个一样的分数并列第一后是 第二名 怎样用函数实现. 解答:在B3中复制如下的数组公式,然后往右复制: {=SUM(IF(B1=LARGE(IF(LARGE($B$1:$H$1,COLUMN($A$1:$G$1))=IF(ISERROR(LARGE($C$1:$I$1,COLUMN($A$1:$G$1))),0,LARGE($C$1:$I$1,COLUMN($A$1:$G$1))),0,LARGE($B$1:$H$1,COLUMN($A$1:$G$1))),COLUMN($A$1:$G$1)),COLUMN($A$1:$G$1),0))} 也可换个方式不用数组,在B3中复制如下的公式,然后往右复制: =RANK(B1,$B1:$H1)+COUNTIF($B$1:B1,B1)-1 当做日报表累计数自动加 当做日报表时,怎样让月累计数自动加上? 就是要月累计自动加上今天的当日收入数,今天只输入当日收入,我想用用前一天的月累计数加上今天的当日收入数为今天的月累计数.情况是一月一个工作薄,每一个工作薄下30个工作表,用每一天的日期为报表名.我想把月累计的公式写为 =sheet17!c5 中的 17 用 day(now())-1 的值去取代他,该怎么办呢? 以下为报表格式,谢谢大家帮我想一想. 部门-------当日收入 -----------月累计 团队收入 12.12 123.00 /写字间收入 147,258.00 147.147/房内吧收入 147,258,369.00 解答:=SUM('Sheet1:Sheet30'!C5) 在你需要月汇总的单元格填入上述公式,其作用是将工作表1到工作表30的“C5”单元格的值全部累加起来,而“C5”单元格应填入当日的收入数。 又问:月累计的公式写为 =sheet17!c5 中的 17 用 day(now())-1 的值去取代他,该怎么办呢? ” 答:用公式: =INDIRECT(ADDRESS(1,1,1,1,"sheet"&DAY(NOW())-1)) 工资条问题 职工工资构成非常复杂,往往超过10项,因此每月发工资时要向职工提供一包含工资各构成部分的项目名称和具体数值的工资条。打印工资条时要求在每个职工的工资条间有一空行便于彼此裁开。本模板就是用EXCEL函数根据工资清单生成一便于分割含有工资细目的工资条表格。 本工资簿包含两张工资表。第1张工资表就是工资清单,称为"清单"。它第一行为标题行包括职工姓名、各工资细目。 第2张工作表就是供打印的表,称为"工资条"。它应设置为每三行一组,每组第一行为标题,第二为姓名和各项工资数据,第三行为空白行。就是说整张表被3除余1的行为标题行,被3除余2的行为包括职工姓名、各项工资数据的行,能被3整除的行为为空行。 在某一单元格输入套用函数"=MOD(ROW(),3)",它的值就是该单元格所在行被3除的余数。因此用此函数能判别该行是标题行、数据行还是空行。 在A1单元格输入公式"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,"value-if-false"))"并往下填充,从A1单元格开始在A列各单元格的值分别为清单A1单元格的值即姓名、value-if-false、空白,姓名、value-if-false、空白,......。其中value-if-false表示MOD(ROW(),3)既不等于0又不等于1时,即它等于2时应取的值。它可用如下函数来赋值:"INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"。INDEX()为一查找函数它的格式为:INDEX(reference,row-num,col-num),其中reference为查找的区域,本例中为清单表中的A到G列,即函数中的"清单!$A:$G",row-num为被查找区域中的行序数即函数中的INT((ROW()+4)/3),col-num为被查找区域中的列序数即函数中的COLUMN()。第2、5、8.......行的行号代入INT((ROW()+4)/3)正好是2、3、4......,COLUMN()在A列为1。因此公式"=INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"输入A列后,A2、A5、A8......单元格的值正好是清单A2、A3、A4......,单元格的值。这样,表的完整的公式应为"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())))"。把此公式输入A1单元格,然后向下向右填充得到了完整的工资条表。 为了表格的美观还应对格式进行设置,一般习惯包括标题、姓名等文字在单元格中要取中,数字要右置,数字小数点位数也应一致,还有根据个人的爱好设置边框。本表格只需对一至三行的单元格进行设置,然后通过选择性格式设置完成全表的设置。 本工作簿的特点是1、不对清单表进行操作保持清单工作表的完整,2、全工作表只有一个公式通过填充得到全表十分方便。 例如:我的单位不大不小,有200多号人。最近领导要求把每个员工个人的工资情况打出来,分发给每位员工。每个员工的工资条上只能有两行内容:一行是分解的项目内容,如基本工资、岗位工资、总计等等;另一行是对应第一行的具体工资数额。 可以这样解决:Sheet2 1.为A1命名为K 2.为A3:A250命名为XX 从A3贴上主索引,数据要连续中间不允许有空格
3.写公式=VLOOKUP(K,DATA,2,0) 有几个字段写几个,位置随您高兴摆 4.隐藏A栏 ************************************************************************************** Sub 打印() Application.ScreenUpdating = False '屏幕不更新 Dim c As Object '宣告c为对象,请准备空间 [xx].Select '选取变量范围 Set c = ActiveCell '设定c对象为作用单元格 Do Until IsEmpty(c.Value) '作Do循环直到无值时跳出 [k].Value = c.Value Set c = c.Offset(1, 0) '设定c往下进一格再取主索引值 Sheets("Sheet2").PrintPreview '工作表直接打印改PrintOut Loop End Sub 另一回答:我是做人事管理的也遇到过你的问题,我用如下方法解决十分方便,而不用任何代码. 方法的原理是调整打印机的自定义纸张大小到恰好显示一个人的工资条的大小,请按如下: 如:我的excel工资表将项目内容放在第一、二行,行高为20.1,用a4纸横向打印 1、在页面设置中将上、下边距,页眉、页脚均设为零, 在页面设置--工作表---顶端标题行 中输入 $1:$2,即将放在 第 一、二行的项目内容设成每页标题行 打印方向为横向 2、、在文件----打印---属性---纸张----自定义中将纸张的 宽度=280 (单位:毫米) 长度=2970 (单位:毫米) 3、打印时可选1---200页,即可打印200人的工资条,一张a4可打10人 确定后预览,可调整下边距至每页显示一张工资条 我的解决办法:我只用了一个公式: if(mod(row(),3)=0,"",if(mod(row)(),3)=1,sheet1!a$1,index(sheet1!$a:$g,int((row()+4/3),cllolumn())))你试一下 (解释:int((row()+4/3) 是这个意思:一个工资表,有列标题,接下来是工资记录。而我在此表基础上,加一个自动生 成的工资 条表, mod(row(),3)=0,在此表上用这个表示第三行保留空白行; if(mod(row)(),3)=1,sheet1!a$1,表示是第一行取标题列; index(sheet1!$a:$g,int((row()+4/3),column())这是关键的地方:是指它不是第一行,也不三倍数的行,是记录 行的表示,你想第二行显示记录,则2+4/3=2 取工资 表的第二行记录;第五行显示记录,则5+4/3=3 取工资 表的第三行记录;第八行显示记录,则8+4/3=4 取工资 表的第四行记录;第十一行显示记录,则11+4/3=5 取工资 表的第五行记录;这个公式你可以根据具体情况变化:尤其是((row()+4/3),中的4这个数字, 定制单元格数字显示格式 定制单元格数字显示格式,先选择要定制的单元格或区域,》单击鼠标右键》单元格格式》选择‘数字’选项》选择‘自定义’》在“类型”中输入自定义的数字格式。 如何输入自定义的数字格式:需要先知道自定义格式中那些常用符号的含意,具体可以先不选择‘自定义’,而选择其它已有分类观看‘示例’,以便得知符号的意义。 比如:先选择‘百分比’然后马上选择‘自定义’,会发现‘类型’中出现‘0.00%’,这就是百分比的定义法,把它改成小数位3位的百分比显示法只要把‘0.00%’改成‘0.000%’就好了,把它改成红色的百分比显示法只要把‘0.00%’改成‘[红色]0.00%’就好了。 关于数据引用的问题 在一个工作簿中,假如A工作表中的单元格E8被B工作表中的某单元格引用,现在由于A工作表中插入了行,原来的E8现在可能是E28,结果造成B工作表引用数据错误,请问:如何可以使B工作表中的引用随着A表的变化也作相应的自动调整? 回答:利用“相对引用”来实现,“相对引用”是Excel中默认的引用方式 例:在工作表Sheet1中C2单元格为5,D2单元格为6,在工作表Sheet2中C3单元格中输入“=Sheet1!C2+Sheet1!D2”,如果把 C2单元格剪切到C3,那么在工作表Sheet2中C3单元格中的公式就自动变为“=Sheet1!C3+Sheet1!D2” 如何使EXCEL应用程序锁定不让人打开 请问我以下的操作应再如何修改成如密码输入错误则退出EXCEL.这是我编写在PERSONAL.XLS中的一个模块.代码如下,请各高手帮忙为小弟指点一二,不甚感激! Sub auto_Open() MsgBox "热列欢迎来海源,你吃饱了吗?" If Application.InputBox("请输入操作权限密码:123") = 123 Then Else '.....(在这一步中,我想退出EXCEL,但无法实现请高手指点一二) End If End Sub 解答:Private Sub Workbook_Open() MsgBox "热列欢迎来海源,你吃饱了吗?" If Application.InputBox("请输入操作权限密码:123") = 123 Then Exit Sub Else Application.Quit End If End Sub 程香宙的修改: Sub auto_Open() MsgBox "程香宙欢迎你的到来", vbQuestion, "联系电话:013838751304" If Application.InputBox("请输入操作权限密码:", "系统登陆") = 123 Then Else MsgBox "密码错误,请重输", vbCritical + vbOKOnly, "你还有两次机会" If Application.InputBox("请输入操作权限密码:", "系统登陆") = 123 Then Else MsgBox "密码错误,再给你一次机会!", vbCritical + vbOKOnly, "你还有一次机会" If Application.InputBox("请输入操作权限密码:") = 123 Then Else MsgBox "你无权进入本系统!请向程香宙申请密码!", vbCritical + vbOKOnly, "你没有机会啦!" Application.Quit End If End If End If End Sub 数组的运算法则 有excel表如下: 姓名 成绩 /王娟 优 /永生 中 /闵生刚 优 /朱智锐 中 /胡强强 良 /金龙鳞 优 /张正梅 中 /汪欲生 良 /闵生刚 中 /王娟 优 /张正梅 优 /闵生刚 中 /永生 良 /王娟 良 /其中姓名在sheet1页的a列,成绩在c列。我想在sheet2页中建立一个表如下: 姓名 统计优数 /胡强强 /金龙鳞 /闵生刚 /汪欲生 /王娟 /永生 /张正梅 /朱智锐 /同样姓名在sheet1的a列,统计在c列,这里的姓名已经整理为没有重复的姓名。要统计出每人获得优的数目。请问用什么函数能解决。我用了if((sheet1!c2)="优",countif(sheet1!a:a,a2)),结果是统计的姓名数,而不是成绩数。如果能统计出来,哪么就是一个动态的当sheet1中数据变化时,sheet2中数据应到跟着变化。 有位朋友指导采用下面的式子把上面的问题解决了。这里假设最大记录数为100 =sum((sheet1!$a$2:$a$101=$a2)*(sheet1!$c$2:$c$101="优")*1) ,按Ctrl+Shift+Enter ,但是这是用到了数组运算,请问数组运算的规则是什么,看到许多地方都可以用数组解决,但不知其所以然。帮助文件中也没说运算规则。如上式中为什么用*号?谢谢 解答:对于数组公式的含义 sum((sheet1!$a$2:$a$101=$a2)*(sheet1!$c$2:$c$101="优")*1) 我们来一部分,一部分的讲: 1、(sheet1!$a$2:$a$101=$a2) 表示用 sheet1!$a$2:$a$101 区域中的每一个单元格中的内容与 $a2 单元格的内容进行比较,如果相同结果为“True”,否则为“False”。 2、(sheet1!$c$2:$c$101="优") 表示用 sheet1!$c$2:$c$101 区域中的每一个单元格中的内容与 字符串"优"进行比较,如果相同结果为“True”,否则为“False”。 3、最后一部分乘以1。是强制Excel将“True”或“False”转换为数值“1”或“0”,以便sum函数可以求和。 4、至于第一部分和第二部分之间的乘号(*)的目的是,如果第一部分或者第二部分有一个的结果是“False”,那么Excel将其转换为数值“0”,相乘结果为零,表示不在求和范围内。 替换数据 请教各位如何用将一组数据,如:6550894, 9852547, 2656032, 7461136, 0505867, 5564892, 7235580,0421077,我需要把数据中的数字1,3,5换为符号A表示,2,4,6换为符号B表示,依此类推将数据中的阿拉伯数字0~9分为几类用其它符号替换。 解答:方法1。假设:B13值为9550894。在B14中输入=IF(ISERROR(FIND(MID($B$13,1,1),"135")),IF(ISERROR(FIND(MID($B$13,1,1),"246")),IF(ISERROR(FIND(MID($B$13,1,1),"79")),IF(ISERROR(FIND(MID($B$13,1,1),"80")),"","D"),"C"),"B"),"A") 。 C14中MID()第二个参数为2,以此类推...最后在目标单元格中输入:=CONCATENATE(B14,C14,D14,E14,F14,G14,H14) 方法2:表一: AB... 11234567890 2ABABABCCCD =SUBSTITUTE(A4,A$1,A$2) 说明:先列一个替换表,如表一,在A4处填如数据,在B4处填如上述公式=SUBSTITUTE(A4,A$1,A$2),并向右拖动9个同样的公式,最后一个便是结果.在将该10个相同的公式向下拖,便得到其它的结果.好处:可以修改表一,产生变化. 方法3:你可以把全部数据拷贝到WORD中,再用替换命令,想怎么换就怎么换,然后在拷贝回来。 几个技巧 用“Ctrl+:”输入时间 ;用“Ctrl+;”输入日期 ;用“Ctrl+`”显示当前工作表的单元格引用情况(如果引用的话),再次按下“Ctrl+`”则回到正常的显示状态(别漏了那个点);“Ctrl+1”:打开“单元格格式”对话框,按下ESC键关闭该对话框 ;“Ctrl+ -”:打开“删除”对话框,按下ESC键则关闭该对话框;热键ctrl+2:字体加粗或取消加粗; ctrl+3:字体加斜或取消加斜; ctrl+4:加下滑线或取消; ctrl+5:加删除线或取消; ctrl+9:隐藏当前行; ctrl+0:隐藏当前列;在Cell里,输入公式,比如 =trunc,按CTRL+SHIFT+A,出现函数参数说明;按CTRL+A,出现wizard 。快速填充:选择要填充的单元,输入公式或数值后,按CTRL+Enter。将图形与某个cell的数据联系在一起:a) 选择绘图菜单栏的任一图形 b) 在公式栏里,或按F2,输入到某个cell的联接,比如=A6 c) 回车。粘贴链接图片:a) 选择某区域(比如A2:C7) b)复制 c)按住 SHIFT,点选"编辑-->粘贴链接图片" 。对长公式进行错误查找:点击公式,按F9,出现出错的部分。ESC复原,CTRL+Z为undo。 如何在两个工作表之间进行数据交换 我有两个工作表,第一个表A列是姓名,B列是编号,第二个表A列也是姓名,但是顺序和第一个表的A列不一样,我想在第二个表的B列也加入编号 。 解答:用VLOOKUP函数: =VLOOKUP(A2,Sheet1!A:B,2,FALSE),依次向下拖动 显示数值所在的单元格号 假如有A列和B列两列数字,如何找出A列的数字在B列中所在的位置, 并在第三列显示单元格号。 解答:假设数据在A1:B10,则C列公式为:=MATCH(B1,$A$1:$A$10,0) 我想根据题意应该为:=MATCH(A1,$B$10,0) if 超过7层如何办 1. 将七层之外的IF语句,放在另外的单元格内来处理,例:C5=if(if,...,(if...),B5))),B5单元格就是存放七层之外的IF语句。依此类推,可以实现在数据库语言中CASE语句的功能。 2. IF 函数的确有七层嵌套的限制。遇到七层嵌套还解决不了的问题,可以尝试用其它的函数组合和数组公式来解决;有时用 VBA 方案可以有很好的效果。 这里给出一个解决IF函数嵌套超出范围的方法,可能比较容易使初学者看懂。其思路是:一个单元格做不了的事,分给两个或更多的单元格来做,文字内容是这样,函数内容也是这样。 例子:假如 A1=1,则 B1=A;A1=2,则 B1=B …… A1=26,则 B1=Z 解决方法如下: B1 = IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",C1)))))))) C1 = IF(A1=9,"I",IF(A1=10,"J",IF(A1=11,"K",IF(A1=12,"L",IF(A1=13,"M",IF(A1=14,"N",IF(A1=15,"O",IF(A1=16,"P",D1)))))))) D1 = IF(A1=17,"Q",IF(A1=18,"R",IF(A1=19,"S",IF(A1=20,"T",IF(A1=21,"U",IF(A1=22,"V",IF(A1=23,"W",IF(A1=24,"X",E1)))))))) E1 = IF(A1=25,"Y",IF(A1=26,"Z","超出范围")) 根据情况,可以将 C、D、E 这些从事辅助运算的单元格放在其它任何地方 3. 一个单元格也可以实现 =IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",""))))))))&IF(A1=9,"I",IF(A1=10,"J",IF(A1=11,"K",IF(A1=12,"L",IF(A1=13,"M",IF(A1=14,"N",IF(A1=15,"O",IF(A1=16,"P",""))))))))&IF(A1=17,"Q",IF(A1=18,"R",IF(A1=19,"S",IF(A1=20,"T",IF(A1=21,"U",IF(A1=22,"V",IF(A1=23,"W",IF(A1=24,"X",""))))))))&IF(A1=25,"Y",IF(A1=26,"Z",""))(数组形式输入)。 4. 以一例:a1=1,2,3,4,5,6,7,8,9,10 b=if(a1=1,"一",if(a1=2,"二",if(a3=3,"三",.......if(a1=9,"九",if(a1=10,"十")))))),if超过7层不起作用,我该如何办 解答:1、b=if(a1>5,if(a1=6,"六"。。。。。。)),明白意思?就是截为两段再做判断,这样可以不超过7重。 2、可以用自定义数字格式。也可以用=CHOOSE(A1+1,"一二三四五六七八九十") 问:实际上我的要求是现行高一成绩统计中:b=if(a1="语文","语文",if(a1="数学","数学",if(a1="英语","英语",if(a1="物理","物理",if(a1="化学","化学",if(a1="历史","历史",if(a1="政治",政治",if(a1="生物","生物“,if(a1="地理","地理")))))))),这样超过了7层。我不知如何处理。因为下面的公式要引用语、数、英、等。 答:新建一表,取名Data,找一区域设置名称为SubjectTable: 语文 Chinese 英语 English .. =vlookup(SubjectTable,a1,2,false)可以有65536个,够了吧。其实,稍加改进,理论上,可以有达到你硬盘空间的个数。或用if和or的组合可以解决15个。 再举个例子: =IF(A16="","",IF(B16="","样办尚未交",IF(OR(B16="内部检查中",B16="数据查询中",B16="数据查询中"),CONCATENATE(IF(B16="内部检查中","品质检测中",""),IF(B16="数据查询中","图纸未确认",""),IF(B16="为不合格","需要修正","")),CONCATENATE(IF(C16="客户检查中","待客回复",""),IF(C16="合格","待P/O生产",""),IF(C16="取消","客户取消",""),IF(C16="为客户设变中","客户设变中",""),IF(C16="不合格","需要修正",""))))) 一个单元格内格式问题 如果我做了一个表某一列是表示重量的,数值很多在1--------------1524745444444之间的数不等。这些表示重量的数。如果我想次给他们加上单位,但要求是单位是>999999吨,之下>999是千克,其余的是克。如何办 答:[>9999]###.00,"吨";*,*.00"千克" 怎样用函数求出一定范围内的数值的偶数的个数 解答:1设你的数据区域为A1:A30 {=COUNT(IF(A1:A 30/2/2 =INT(A1:A30/2),A1:A30))} 如果你的数据区域内还包括空白格你不想计算在内的话, {=COUNT(IF(A1:A30/2/2=INT(A1:A30/2),A1:A30))-COUNTBLANK(A1:A30)} 或:{=sum((even(a1:a30)=a1:a30)*1)} 如何使某列的数据不重复 1、 我做了个宏,可惜在数据量大时(超过1000时)速度狂忙,各位帮我修改修改 Sub 检查重复项() Dim i As Integer Dim j As Integer num = Selection.Cells.Count For i = 1 To num For j = i + 1 To num If (Selection.Cells(i) = Selection.Cells(j)) Then MsgBox Selection.Cells(i).Value End If Next j Next i MsgBox "检索完毕" End Sub 2、 假设数据在B列 选中B列,[数据]-[数据有效性]-[自定义] 在“公式”输入框中键入:=COUNTIF(B:B,B1)=1。 请问如何能使随机数不重复 我在30个单元格里使用了randbetween(1,500),随机抽取了1-500之间的任意数,但问题是这30个数中仍有机会出现重复请问如何才能使这些随机数不重复呢? 答:1、勾选迭代计算,A1输入如下公式: =IF(COUNTIF($A$1:$E$6,A1)=1,A1,RANDBETWEEN(1,500)) 如果某格出现0值,点选旁边单元格拖一下即可。 2、用上面的方法得到的随机数不会变化,如何做到想变就变?增加一个条件语句,即可达到此效果,公式如下: =IF(COUNTIF($A$1:$E$6,A1)=1,IF($G$1=1,RANDBETWEEN(1,500),A1),RANDBETWEEN(1,500)) G1为控制格,当在G1输入数字1,就开始变。变化后的数据有可能不惟一了,怎么办?把1清除即可! 日期型编号 想在单元格里输入1,产生0207121这样一个数字,02是2002年,07是7月份,12是12日,1是输入的数值 答:如a1输入1,要在b1生成你要的数字,你可以在b1设公式=text(today(),"yymmdd")&a1 如何将数字改变为字符串 答:=TEXT(A1,"@") 在Excel中如何自定义数字格式 虽然Excel为用户提供了大量的数字格式,但还是有许多用户因为工作、学习方面的特殊要求,需要使用一些Excel未提供的数字格式,这时我们就需要利用Excel的自定义数字格式功能来帮助实现用户的这些特殊要求。 一、在Excel中创建自定义数字格式的方法 1、选择要设置格式的单元格或单元格区域。 2、单击“格式”菜单中的“单元格”命令,然后单击“数字”选项卡。 3、在“分类”列表中,单击“自定义”选项。 4、在“类型”框中,编辑数字格式代码以创建所需的格式。 在Excel自定义数字格式使用如下的表达方式: 正数的格式 负数的格式 零的格式 文本的格式 #,##0.00 [Red]-#,##0.00 0.00 "TEXT"@ 在Excel自定义数字格式的格式代码中,用户最多可以指定四个节;每个节之间用分号进行分隔,这四个节顺序定义了格式中的正数、负数、零和文本。如果用户在表达方式中只指定两个节,则第一部分用于表示正数和零,第二部分用于表示负数。如果用户在表达方式中只指定了一个节,那么所有数字都会使用该格式。如果在表达方式中要跳过某一节,则对该节仅使用分号即可。 二、自定义数字格式实例 (一)自动添加文本 在日常财务工作中,常常需要在金额数字后加单位“元”,这时就可以使用“0.00元”的自定义数字格式,当用户在单元格中录入数字后,Excel就会自动在数字后加上单位“元”。 如果需要将单元格中录入的数字“32”自动转换成“高三十二班”格式,只要将单元格的数字格式定义为“高[DBNum1]G/通用格式班”即可。 (二)在自定义数字格式中使用颜色 要设置格式中某一部分的颜色,只要在该部分对应位置用方括号键入颜色名称或颜色编号即可。Excel中可以使用的颜色名称有[黑色]、[蓝色]、[青色]、[绿色]、[洋红]、[红色]、[白色]、[黄色]八种不同的颜色,此外Excel还可以使用[颜色X]的方式来设置颜色,其中X为1-56之间的数字,代表了56种不同的颜色。 例如:当用户需要将单元格中的负数数字用蓝色来表示,只要使用“#,##0.00;[蓝色]-#,##0.00”自定义数字格式,用户在单元格中录入负数时,Excel就会将数字以蓝色显示。 (三)在自定义数字格式中使用条件格式 在Excel自定义数字格式中用户可以进行条件格式的设置。当单元格中数字满足指定的条件时,Excel可以自动将条件格式应用于单元格。Excel自定义数字格式中可以使用如下六种标准的比较运算符: 运算符 含义 = 等于 > 大于 < 小于 >= 大于等于 <= 小于等于 <> 不等于 在Excel中要想设置满足指定条件数字的格式,在自定义数字格式代码中必须加入带中括号的条件,条件由比较运算符和数值两部分组成。 例如:在学生成绩工作表中,当我们想以红色字体显示大于等于90分的成绩,以蓝色字体显示小于60分的成绩时,其余的成绩则以黑色字体显示,这时只需将自定义数字格式设置为“[红色][>=90];[蓝色][<60];[黑色]”即可。 值得注意的是,当你在以后需要继续使用刚才所创建的成绩条件自定义数字格式时,你会发现在“单元格格式”的“自定义”分类类型中找不到“[红色][>=90];[蓝色][<60];[黑色]”格式,这是因为Excel自动将你所创建的“[红色][>=90];[蓝色][<60]”格式修改成“[[红色][>=90]G/通用格式;[蓝色][<60]G/通用格式;[黑色]G/通用格式”,你只需选择此格式即可达到同样的使用效果。 (四)隐藏单元格中的数值 在Excel工作表中,有时为了表格的美观或者别的因素,我们希望将单元格中的数值隐藏起来,这时我们使用“;;;”(三个分号)的自定义数字格式就可达到此目的。这样单元格中的值只会在编辑栏出现,并且被隐藏单元格中的数值还不会被打印出来,但是该单元格中的数值可以被其它单元格正常引用。 在单元格显示负数为红字后又紧跟汉字 解答:1、这个使用宏可以解决,但单元格开始请不要带单位。单个单元格宏代码如下: Sub 宏1() ' ' 宏1 Macro ' Dent 记录的宏 2002-2-16 ' Dim str1 As String str1 = Str(ActiveCell.Value) If Val(str1) < 0 Then str1 = Abs(Val(str1)) & " 文字" ActiveCell.Value = str1 ActiveCell.Font.Color = vbRed End If End Sub 2、用单元格格式解决: #,##0.00;[红色]-#,##0.00"文字" 检索问题 在一个工作表中,有客户名称、收款日期等字段名及相应数据。现在想为了检验收款日期是否到期,要求在工作表的某一空白单元格中键入某一日期 ,则此单元格以下的单元格可以显示收款日期字段中所有在此日期前的日期清单,请问如何实现?并要求不使用筛选功能。 解答: Sheet2!A1命名为X,键入日期 Sheet1:客户名称、收款日期等字段名及相应数据 插入名称定义:XX=OFFSET(Sheet1!$A$2,,,MATCH(X,Sheet1!$B$2:$B$65536)-1,2) XX即是您所需要之范围 vba写在This Workbook Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Excel.Range) On Error GoTo 1: Target.Select Range(Target.Value).Copy ActiveSheet.Paste Link:=False Application.CutCopyMode = False 1 End Sub ********************************************************************************** Sheet2任意储存格键入xx按ENTER [比较一下并没有比筛选功能快],反而复杂 SHEET2随便贴张图 键入公式=XX 微软到底对我们隐藏了多少 NumberString 这个函数是否一直存在但没有解释?NumberString(1234567890,1)就像自定格式[DBNum1]一样,它还有2的选择。其实这些特别用途的函数是否中文板设计时特别隐藏。测试结果: NumberString(1234567890,1) = 一十二亿三千四百五十六万七千八百九十 NumberString(1234567890,2) = 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾 NumberString(1234567890,3) = 一二三四五六七八九○ DateString()相信亦是一特别Lotus函数。 DATESTRING("23-Sep- 2002") = 2002 年09 月23 日 DATESTRING("23Sep2002") = 2002 年09 月23 日 DATESTRING(" 9/23/2002 ") = 2002 年09 月23 日 DATESTRING(" 9-23-2002 ") = 2002 年09 月23 日 求一组数中第一个出现的正数 单元格A1—G1中存放一组数,如何使A2的值等于这组数中第一个出现的正数(按A1—G1的顺序),若无正数则A2=0. 解答:=IF(A1<=0,IF(B1<=0,IF(C1<=0,IF(D1<=0,IF(E1<=0,IF(F1<=0,IF(G1<=0,,G1),F1),E1),D1),C1),B1),A1) 或:{=IF(COUNTIF(A1:G1,">0")=0,0,INDIRECT(ADDRESS(1,SMALL(IF(A1:G1>0,COLUMN(A1:G1)),1))))} 能否使表格不能打印 解答: Private Sub Workbook_BeforePrint (Cancel As Boolean) Cancel = True End Sub (用法:打开Excel,按Alt+F11,调出VBE后,按Ctrl+r显示出工程资源管理器(默认此窗口应已显示),双击ThisWorkbook,在模块中粘入代码即可!要想打印你表,用截图软件即可.无最保险办法)。 有无这样的函数 A1为一定范围内的随机值,B1—B20为一组数,有无这样的函数来确定A2的值? 当A1=1时,A2=B1 当A1=2时,A2=B2 当A1=3时,A2=B3 ………… 解答:=INDIRECT(ADDRESS(A1,2))(绝) 能实现两栏数据中按特定条件进行比较并做出相应记号吗 具体意思如下:有四栏数据。A栏 B栏 C栏 D栏 F栏 对A栏及C栏数据进行查找对比,如果发现存在A=C,且B=D,则在符合条件的F栏显示已找到,对于没有查到的的显示未找到。 解答:如果是一一对应查找则f2=if(and(A2=C2,B2=D2),"OK","No"),复制. 如果整体查找:=IF(AND(COUNTIF($C$2:$C$5,A2)>0,COUNTIF($D$2:$D$5,B2)>0),"找到","没有") 如何对文本格式的数字进行筛选 如80/24;73/56…… 解答:要对A列进行筛选,条件1:符号"/"左边的数字>=50;条件2:符号"/"右边的数字>=80,达到任一条件的即被选中。试试这个公式: B1=IF(OR(LEFT(A1,FIND("/",A1)-1)*1>=50,MID(A1,FIND("/",A1)+1,LEN(A1)-FIND("/",A1))*1>=80),A1,"") 我想再请教一个问题:在自动筛选中有"包含、不包含"之类的选项,这类选项在高级筛选中能否实现? 提供以往一个函数公式,请你研究看是否有参考: ={SUM((ISNUMBER(SEARCH("广东",$B$3:$B$13)))*($A$3:$A$13="股份制")*($C$3:$C$13))} 这是对B列单位名称中包含"广东"并且A列企业类型为"股份制"的,按C列汇总. 如何筛选出特定行 一份工作表,有几万行数据,现在想每隔50行打印一行,如何进行筛选 解答:插入一空列,输入=MOD(ROW(),50)并复制到全数据列,再用筛选法把有“0”的单元格选出. Word加启动密码 在Word模板中录制如下宏文件保存即可: Sub autoexec() Dim user user = InputBox("请输入软件启动密码") If user = "password" Then Else MsgBox ("非法用户,将退出本程序.Wu") Application.Quit End If End Sub 有关大小写的转换 在EXCEL单元格中有的单元格是小写字母,有的是大小写混在一起现在我想全部转为大写、或全部转为小写,有哪些方法呢? 利用upper()函数或还有LOWER。如:a1=aBcD,upper(a1)=ABCD 在Excel中打造自己的“公式保护”菜单 工作中经常用到Excel的计算功能,有时一张工作表中需要设置很多公式,为了防止误操作就将工作表保护起来,但是如果将含有公式的单元格保护,而其它单元格不锁定,设置时需要一个个单元格选定,很麻烦而且容易出错,就想到建立一个菜单项,将这项工作变成菜单。有幸的是这一切Excel都能完成,具体操作如下: 先将工作表保护,不必输入密码。 再录制一个宏。方法是:打开“工具”栏,单击“宏”-“录制新宏”;将其命名为“公式保护”,单击“保存在”的下拉箭头,将新宏保存到“个人宏工作簿”。单击“确定”录制开始。(注意此后的每一动作都将被录制,直至“停止录制”。) 1. 将工作表取消保护; 2. 选定a1单元格,输入="测试"(注:黑体为实际输入内容,标点符号均为英文输入法状态,下同); 3. 单击工作表左上角的方框选定整个工作表; 4. 单击“格式”-“单元格”-“保护”项,将“锁定”和“隐藏”前的方框里的对号去掉; 5. 单击“插入”-“名称”-“定义”,当前工作表名称输入:公式保护,引用位置输入:=get.cell(4,indirect("rc",false)), 单击“添加”后“确定”; 6. 单击“格式”-“条件格式”,在“单元格数值”下拉框选定“公式”,后面的框内输入=公式保护 ,单击“格式…”,在图案标签内选浅绿色或者其它颜色“确定”,再“确定”; 7. 单击 “编辑”-“定位”-“定位条件…”,选定“公式”项“确定”再“确定”; 8. 重复步骤4,将“锁定”和“隐藏”前的方框里的对号选定; 9. 选定a1单元格,取消其内容,并重复步骤4,取消a1的锁定和隐藏属性; 10. 单击工具-保护-保护工作表,将工作表保护(也不必设密码)。再单击“工具”-“宏”-“停止录制”停止录制。再打开“工具”-“自定义”项,再“命令”标签栏内“类别”栏中找到“新菜单”并指定,在其右侧的命令框中的新菜单用鼠标按住拖到“工具栏”的“保护”项中的“保护工作表”下面放开,并单击右键将其命名为“公式保护”,将刚才录制名为“公式保护“的宏指定给它。至此,一个很有用的菜单项就作成了。此后,只要你将鼠标移动到“工具”-“保护”-“公式保护”的位置,工作表将执行其所指定的宏,只要你工作表中输入了公式(以=开头),含有公式的单元格将自动变为浅绿色,提醒你和别人此处有公式,小心编辑,十分醒目。编辑完公式后再次运行该命令就可以此保护工作表并锁定公式,禁止改动。 如何让EXCEL自动从头统计到当前单元格 情况如下: C列要根据A列的内容来统计B列的数据,范围从A1:An,即当A列中An有数据时,Cn自动根据An的值,统计B1:Bn的数据。 解答:=SUM(INDIRECT("B1:B" & LARGE((A1:A65535<>"")*(ROW(A1:A65535)),1))),按Ctrl+Shift+Enter。 请问想要取当前单元格的列号,用什么函数 1、=CHAR(64+COLUMN()) 2、Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Selection.Columns.Column > 26 Then tt = Mid(ActiveCell.Address, 2, 2) Else tt = Mid(ActiveCell.Address, 2, 1) End If MsgBox (tt) End Sub 3、1的公式就变化一下:=IF(COLUMN()>26,CHAR(64+INT(COLUMN()/26)) & CHAR(64+MOD(COLUMN(),26)),CHAR(64+COLUMN())) SUMIF函数 a1至A4是10,24,30,12.B1至B4是8,15,25,35.D1至D4是25,4,3,5.用SUMIF 第一参数选取A1:B4,第二参数是>20,第三参数选取D1:D4.它得出是7。它判断的是A1:A4 。我的要求是B1:B4 也跟着判断 , 也就要得出来得是12 解答:{=SUM((A1:A4>20)*(B1:B4>20)*C1:C4)} 怎么能快速的将两个单元格的内容互换 1、 Sub ChangVal() my1value = ActiveCell.Value For Each a In Selection If a.Address <> ActiveCell.Address Then my2value = a.Value a.Value = my1value ActiveCell.Value = my2value End If Next a End Sub 2、用鼠标先选定单元格,点住单元格边框,并按住SHIFT键,然后托拽到隔壁单元格的后面一条边框处。你能看到被托拽部分会变成灰色的“工”字形,然后放手后,单元格就互换了。 如何能到两个时间段的17:00-8:00小时数? 1.已知"E4"为08011500(为文本格式﹐开始时间﹐意思为 8 月 1 日 下午15﹕00)﹐"G4"为08100900(为文本格式﹐结束时间﹐意思为 8 月 10 日 上午9点) 问﹕如何能得到开始时间到结束时间(17:00-08:00)的总小时数? 2. 如何得到开始时间到结束时间的节假日时数?(如5.1﹐10.1﹐星期六﹐星期天) 解答:方法1:=(DATE(YEAR(NOW()),MIDB(AF4,1,2),MIDB(AF4,3,2))-DATE(YEAR(NOW()),MIDB(E4,1,2),MIDB(E4,3,2))-1)*15+IF(MIDB(E4,5,2)+MIDB(E4,7,2)/60<=8,15-(MIDB(E4,5,2)+MIDB(E4,7,2)/60),IF(MIDB(E4,5,2)+MIDB(E4,7,2)/60>=17,24-(MIDB(E4,5,2)+MIDB(E4,7,2)/60),7))+IF(MIDB(AF4,5,2)+MIDB(AF4,7,2)/60<=8,MIDB(AF4,5,2)+MIDB(AF4,7,2)/60,IF(MIDB(AF4,5,2)+MIDB(AF4,7,2)/60>=17,MIDB(AF4,5,2)+MIDB(AF4,7,2)/60-9,8)) 方法2:networkdays 需要你提供一个节假日列表作为参数。我猜你不会喜欢手工输入这样一个表。以下公式功能更为强劲,它可以算出两个单元格(A2和C2)所储存的日期之间的周末天数,乘以小时数即可计算出你所说的节假日时数。但是,它无法计算国庆节等公众假期。 =IF(C2>A2,SUM(IF(WEEKDAY(C2-ROW(INDIRECT("1:"& C2-A2)),2)>5,1,0)),SUM(IF(WEEKDAY(A2-ROW(INDIRECT("1:"& A2-C2)),2)>5,1,0)))。这是一个数组公式,输入完成后按CTRL+SHIFT+ENTER结束。 方法3:用格式定义E4,G4为日期时间格式:****-**-** **:**。然后:(G4-E4)*24 即可得两时间内的小时数。 如何在单元格返回工作表名称 答:=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename"))) 如何在输入数字的加减乘除按ENTE后能在另一单元格自动出现计算数值 1、编了个宏: Sub aa() Cells(1, 1) = Mid(ActiveCell.Formula, 2, 13) End Sub 先在单元格里输入公式得出结果,选定得出结果的单元格运行宏就可以在A1出文本. 2、宏(测试通过) Sub aa() A = 2 '行' B = 4 '列 LINE1: If Cells(A, B) = "" Then Exit Sub Else Cells(A, B + 1).Formula = "=" & Cells(A, B) A = A + 1 GoTo LINE1: End If End Sub 有A1,B1,C1,D1四个单元格D1的值要随着A1的变化而变化 A1有三种变化,一、二、三;当A1=‘一’时,D1=“ ”; A1=‘二’时,D1=(B1+C1)/3 ; A1=‘二’时,D1=(B1+C1)/6 。以上可以通过IF来完成 。可我希望的是:当B1或C1为空时,不论A1为什么D1都为空,这样做得到么? 解答:1、=IF(OR(B1="",C1=""),"",IF(A1="一","",IF(A1="二",(B1+C1)/3,IF(A1="三",(B1+C1)/6,"")))) 2、=IF(OR(B1="", C1="", A1="一"), "", IF(A1 = "二", (B1+C1)/3, (B1+C1)/6)) 3、 如果考虑 A1 没有数据的话:=IF(OR(B1="", C1="", A1="一",A1=""), "", IF(A1 = "二", (B1+C1)/3, (B1+C1)/6)) 对A列不重复的数值计数 我只能做到新建一列,B列,然后第一个单元格countif($A$1:$A$100,A1),然后拖动到全部新列。最后在新列下面用sumif(B1:B100,1) 谁有更好地方法。 解答:1、{=SUM(IF($A$1:$A$100="","",1/(COUNTIF($A$1:$A$100,$A$1:$A$100))))}(又问:公式中的“1/(COUNTIF($A$1:$A$100,$A$1:$A$100))”像是一个倒数,怎么理解?答:用倒数是这个意思:如果只出现一次,数组中的相应项统计为1,其倒数为1,Sum统计计1。如果出现 N 次,其倒数为1/N,出现了N次,求和就是Nx1/N,最后Sum统计就只计1。) 永恒的求和 1、=SUM(OFFSET(A1,,,ROW()-ROW(A1)))可以对A列数值自动求和。 2、=SUM(INDIRECT("R2C:R[-1]C",FALSE)) 3、=SUM(INDIRECT("A2:A"&ROW()-1)) 4、 坚持不用R1C1栏名列号表示法还有一个方法,不过又复杂了些。首先定义一个公式:COL=IF(COLUMN()>26,CHAR(INT((COLUMN()-1)/26)+64)&CHAR(IF(MOD(COLUMN(),26)=0,26,MOD(COLUMN(),26))+64),CHAR(COLUMN()+64))。后于欲求加总之储存格输入:=SUM(INDIRECT(COL&"1:"&COL&ROW()-1))。则此公式复制到任何一任皆可用,又不怕产生错误值。(注:COL=IF(COLUMN()>26,CHAR(MOD(COLUMN(),26)+64)&CHAR(INT(COLUMN()/26)+64),CHAR(COLUMN()+64))。暴露了一个为人不知的缺点,如果列数到了AA列以后就不行了,虽然可用ADDRESS()解决,比用CHAR()好多了,但公式还是太长,用在一个加法中实在不值) 5、 其实用ADDRESS更好,=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN()))),还是一句老话,为做一个加法不是太值,这只能是技术上的讨论。 如何使用EXCEL进行动态跨表取数 有两个文件,第一个文件有31张日报表,每天一个表单;第二个文件仅一个表单;如何在第二个文件中,输入1时由函数动态取出第一张表单数(如SHEET1),输入2时取(SHEET2)数,依次类推……。,如何设公式。在同一文件中可以用INDIRECT和ADDRESS组合,可是跨表好象不行,请各位指教一二! 解答:前提是两个工作表都要打开:=INDIRECT("[Book2]Sheet"&A1&"!$B$1") 如何使用對照表 设一对照表如下:如何使用函数当输入。当a1=34 则a2显示"乙" b1=68 则b2显示"丁"/甲 22 33 44 66..../乙 26 34 43 62.... /丙 28 39 41 67.... /丁 27 31 49 68.... /戊 23 32 46 64.... /己 29 38 47 61.... /更 21 37 48 69.... /辛 24 36 42 63.... 解答:如A列输入的数字在表中都存在,把你的数据放在D到G列,甲乙丙丁戊己辛放在最后一列,即H列。在B列输入公式“=IF(A1="","",VLOOKUP(A1,INDIRECT(ADDRESS(1,INT(0.1*A1)+IF(A1>60,1,2))):INDIRECT(ADDRESS(8,8)),7-INT(0.1*A1)+IF(A1>60,1,0),FALSE))”。如甲乙丙丁戊己辛放在第一列,即列用公式“=IF(A1="","",INDEX(D:D,MATCH(A1,INDIRECT(ADDRESS(1,INT(0.1*A1)+IF(A1>60,2,3))):INDIRECT(ADDRESS(8,INT(0.1*A1)+IF(A1>60,2,3))),0)))” 解答2:如果数据无规律,可用以下方法:如你的数据表在D到H列,在I列输入公式“=IF(ISERROR(MATCH(A$1,E1:H1,0))=TRUE,0,row())"并向下填充,在B1单元格输入公式“=IF(A1="","",INDEX(D:D,LARGE(I:I,1)))” 解答3:我将解答2公式做了小修改(I列公式删除),B1单元格输入公式:=IF(A1="","",INDEX($D:$D, IF(ISERROR(MATCH(A1,$E$1:$H$1,0))=TRUE,0,ROW($E$1:$H$1))+ IF(ISERROR(MATCH(A1,$E$2:$H$2,0))=TRUE,0,ROW($E$2:$H$2))+ IF(ISERROR(MATCH(A1,$E$3:$H$3,0))=TRUE,0,ROW($E$3:$H$3))+ IF(ISERROR(MATCH(A1,$E$4:$H$4,0))=TRUE,0,ROW($E$4:$H$4))+ IF(ISERROR(MATCH(A1,$E$5:$H$5,0))=TRUE,0,ROW($E$5:$H$5))+ IF(ISERROR(MATCH(A1,$E$6:$H$6,0))=TRUE,0,ROW($E$6:$H$6))+ IF(ISERROR(MATCH(A1,$E$7:$H$7,0))=TRUE,0,ROW($E$7:$H$7))+ IF(ISERROR(MATCH(A1,$E$8:$H$8,0))=TRUE,0,ROW($E$8:$H$8))))。 解答4:在B1单元格输入公式:{=IF(COUNTIF($E$1:$G$8,A1)=0,"查无资料",INDEX($D$1:$D$8,SUM(IF($E$1:$H$8=A1,ROW($E$1:$H$8)))))} 又问:当数据区域有重复数据时,就得不到正确结果。因为,在这里你的SUM()返回的只是对一个数据求和。如果有重复数据,怎样才能得到正确结果呢? 答:在B1单元格输入公式:=IF((COUNTIF($E$1:$H$8,$A$1)=0) +(COUNTIF($E$1:$H$8,$A$1) < ROW( )),"" , INDEX($D$1:$D$8,SMALL(IF($E$1:$H$8=$A$1,ROW($E$1:$H$8)),ROW()))) 再往下拖曳,就可依序顯示了。真是快瘋了改了十幾次,有些莫名其妙,進來編輯看公式是完整的可是發表後又老是缺東缺西的,只好多加些空白或強迫分段處理,請使用者自行修改。 或:如有重复数据,則顯示"数据重复"表示,代表要修改数据。{=IF(COUNTIF($E$1:$H$8,A1)=0,"查無資料",IF(COUNTIF($E$1:$H$8,A1)>1,"資料重複",INDEX($D$1:$D$8,SUM(IF($E$1:$H$8=A1,ROW($E$1:$H$8))))))} 如何在单元格返回工作表名称 解答:=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename"))) 何在一列数据中统计限定范围的数据 请教各位:现A列有数字(包括绝对值为0的数字)、文本、空格,要统计数值为14到35(包括14与35)的个数;还要统计数值>35并<14的个数(不包括0),分别该用什么函数? 答:>13 and <36 公式=COUNTIF(A:A,">13")-COUNTIF(A:A,">35")
(>35 or <14) and <> 0 公式=COUNTIF(A:A,">35")+COUNTIF(A:A,"<14")-COUNTIF(A:A,"=0")
|