钟嘉欣i promise歌词:EXCEL基本操作技巧荟萃

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 06:16:47
EXCEL基本操作技巧荟萃
目录
Part 1: EXCEL使用六技巧.............................................................................................................2
Part 2: EXCEL自学资料第一集.....................................................................................................6
Part 3: EXCEL自学资料第二集...................................................................................................51
Part 4: 一天一个小技巧................................................................................................................99
Part 5: EXCEL技巧汇总.............................................................................................................108
Part 6: EXCEL基础知识技巧在线教程...................................................................................131
Part 7: EXCEL运用技巧汇总.....................................................................................................141
Part 8: EXCEL操作-基础篇........................................................................................................168
Part 9: EXCEL问题集锦.............................................................................................................212
本文由Quentin Lin收集整理于西元2006年2月15日
Part 1: EXCEL使用六技巧
返回首页
1.编辑技巧 (1) 分数的输入 如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再输入分数“1/5”。 (2) 序列“001”的输入 如果直接输入“001”,系统会自动判断001为数据1,解决办法是:首先输入“'”(西文单引号),然后输入“001”。 (3) 日期的输入 如果要输入“4月5日”,直接输入“4/5”,再敲回车就行了。如果要输入当前日期,按一下“Ctrl+;”键。 (4) 填充条纹 如果想在工作簿中加入漂亮的横条纹,可以利用对齐方式中的填充功能。先在一单元格内填入“*”或“~”等符号,然后单击此单元格,向右拖动鼠标,选中横向若干单元格,单击“格式”菜单,选中“单元格”命令,在弹出的“单元格格式”菜单中,选择“对齐”选项卡,在水平对齐下拉列表中选择“填充”,单击“确定”按钮。 (5) 多张工作表中输入相同的内容 几个工作表中同一位置填入同一数据时,可以选中一张工作表,然后按住Ctrl键,再单击窗口左下角的Sheet1、Sheet2......来直接选择需要输入相同内容的多个工作表,接着在其中的任意一个工作表中输入这些相同的数据,此时这些数据会自动出现在选中的其它工作表之中。输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。 (6) 不连续单元格填充同一数据 选中一个单元格,按住Ctrl键,用鼠标单击其他单元格,就将这些单元格全部都选中了。在编辑区中输入数据,然后按住Ctrl键,同时敲一下回车,在所有选中的单元格中都出现了这一数据。 (7) 利用Ctrl+*选取文本 如果一个工作表中有很多数据表格时,可以通过选定表格中某个单元格,然后按下Ctrl+*键可选定整个表格。Ctrl+*选定的区域为:根据选定单元格向四周辐射所涉及到的有数据单元格的最大区域。这样我们可以方便准确地选取数据表格,并能有效避免使用拖动鼠标方法选取较大单元格区域时屏幕的乱滚现象。 (8) 快速清除单元格的内容 如果要删除内容的单元格中的内容和它的格式和批注,就不能简单地应用选定该单元格,然后按Delete键的方法了。要彻底清除单元格,可用以下方法:选定想要清除的单元格或单元格范围;单击“编辑”菜单中“清除”项中的“全部”命令,这些单元格就恢复了本来面目。 2、单元格内容的合并 根据需要,有时想把B列与C列的内容进行合并,如果行数较少,可以直接用“剪切”和“粘贴”来完成操作,但如果有几万行,就不能这样办了。 解决办法是:在C列后插入一个空列(如果D列没有内容,就直接在D列操作),在D1中输入“=B1&C1”,D1列的内容就是B、C两列的和了。选中D1单元格,用鼠标指向单元格右下角的小方块“■”,当光标变成"+"后,按住鼠标拖动光标向下拖到要合并的结尾行处,就完成了B列和C列的合并。这时先不要忙着
把B列和C列删除,先要把D列的结果复制一下,再用“选择性粘贴”命令,将数据粘贴到一个空列上。这时再删掉B、C、D列的数据。 下面是一个“&”实际应用的例子。用AutoCAD绘图时,有人喜欢在EXCEL中存储坐标点,在绘制曲线时调用这些参数。存放数据格式为“x,y”的形式,首先在Excel中输入坐标值,将x坐标值放入A列,y坐标值放入到B列,然后利用“&”将A列和B列合并成C列,在C1中输入:=A1&","&B1,此时C1中的数据形式就符合要求了,再用鼠标向下拖动C1单元格,完成对A列和B列的所有内容的合并。 合并不同单元格的内容,还有一种方法是利用CONCATENATE函数,此函数的作用是将若干文字串合并到一个字串中,具体操作为“=CONCATENATE(B1,C1)”。比如,假设在某一河流生态调查工作表中,B2包含“物种”、B3包含“河鳟鱼”,B7包含总数45,那么: 输入“=CONCATENATE("本次河流生态调查结果:",B2,"",B3,"为",B7,"条/公里。")” 计算结果为:本次河流生态调查结果:河鳟鱼物种为45条/公里。 3、条件显示 我们知道,利用If函数,可以实现按照条件显示。一个常用的例子,就是教师在统计学生成绩时,希望输入60以下的分数时,能显示为“不及格”;输入60以上的分数时,显示为“及格"。这样的效果,利用IF函数可以很方便地实现。 假设成绩在A2单元格中,判断结果在A3单元格中。那么在A3单元格中输入公式: =if(A2<60,“不及格”,“及格”) 同时,在IF函数中还可以嵌套IF函数或其它函数。 例如,如果输入: =if(A2<60,“不及格”,if(A2<=90,“及格”,“优秀")) 就把成绩分成了三个等级。 如果输入 =if(A2<60,“差",if(A2<=70,“中”,if(A2<90,“良”,“优”))) 就把成绩分为了四个等级。 再比如,公式: =if(SUM(A1:A5>0,SUM(A1:A5),0) 此式就利用了嵌套函数,意思是,当A1至A5的和大于0时,返回这个值,如果小于0,那么就返回0。 还有一点要提醒你注意:以上的符号均为半角,而且IF与括号之间也不能有空格。 4、自定义格式 Excel中预设了很多有用的数据格式,基本能够满足使用的要求,但对一些特殊的要求,如强调显示某些重要数据或信息、设置显示条件等,就要使用自定义格式功能来完成。 Excel的自定义格式使用下面的通用模型:正数格式,负数格式,零格式,文本格式,在这个通用模型中,包含三个数字段和一个文本段:大于零的数据使用正数格式;小于零的数据使用负数格式;等于零的数据使用零格式;输入单元格的正文使用文本格式。 我们还可以通过使用条件测试,添加描述文本和使用颜色来扩展自定义格式通用模型的应用。 (1)使用颜色 要在自定义格式的某个段中设置颜色,只需在该段中增加用方括号括住的颜色名或颜色编号。Excel识别的颜色名为:[黑色]、[红色]、[白色]、[蓝色]、[绿色]、[青色]和[洋红]。Excel也识别按[颜色X]指定的颜色,其中X是1至56之间的数字,代表56种颜色(如图5)。 (2)添加描述文本 要在输入数字数据之后自动添加文本,使用自定义格式为:"文本内容"@;要在输入数字数据之前自动添加文本,使用自定义格式为:@"文本内容"。@符号的位置决定了Excel输入的数字数据相对于添加文本的位置。 (3)创建条件格式 可以使用六种逻辑符号来设计一个条件格式:>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、=(等于)、<>(不等于),如果你觉得这些符号不好记,就干脆使用“>”或“>=”号来表示。 由于自定义格式中最多只有3个数字段,Excel规定最多只能在前两个数字段中包括2个条件测试,满足某个测试条件的数字使用相应段中指定的格式,其余数字使用第3段格式。如果仅包含一个条件测试,则要根据不同的情况来具体分析。 自定义格式的通用模型相当于下式:[>;0]正数格式;[<;0]负数格式;零格式;文本格式。 下面给出一个例子:选中一列,然后单击“格式”菜单中的“单元格”命令,在弹出的对话框中选择
“数字”选项卡,在“分类”列表中选择“自定义”,然后在“类型”文本框中输入“"正数:"($#,##0.00);"负数:"($ #,##0.00);"零";"文本:"@”,单击“确定”按钮,完成格式设置。这时如果我们输入“12”,就会在单元格中显示“正数:($12.00)”,如果输入“-0.3”,就会在单元格中显示“负数:($0.30)”,如果输入“0”,就会在单元格中显示“零”,如果输入文本“this is a book”,就会在单元格中显示“文本:this is a book”。 如果改变自定义格式的内容,“[红色]"正数:"($#,##0.00);[蓝色]"负数:"($ #,##0.00);[黄色]"零";"文本:"@”,那么正数、负数、零将显示为不同的颜色。如果输入“[Blue];[Red];[Yellow];[Green]”,那么正数、负数、零和文本将分别显示上面的颜色。 再举一个例子,假设正在进行帐目的结算,想要用蓝色显示结余超过$50,000的帐目,负数值用红色显示在括号中,其余的值用缺省颜色显示,可以创建如下的格式: “[蓝色][>50000] $#,##0.00_);[红色][<0]( $#,##0.00); $#,##0.00_)” 使用条件运算符也可以作为缩放数值的强有力的辅助方式,例如,如果所在单位生产几种产品,每个产品中只要几克某化合物,而一天生产几千个此产品,那么在编制使用预算时,需要从克转为千克、吨,这时可以定义下面的格式: “[>999999]#,##0,,_m"吨"";[>999]##,_k_m"千克";#_k"克"” 可以看到,使用条件格式,千分符和均匀间隔指示符的组合,不用增加公式的数目就可以改进工作表的可读性和效率。 另外,我们还可以运用自定义格式来达到隐藏输入数据的目的,比如格式";##;0"只显示负数和零,输入的正数则不显示;格式“;;;”则隐藏所有的输入值。 自定义格式只改变数据的显示外观,并不改变数据的值,也就是说不影响数据的计算。灵活运用好自定义格式功能,将会给实际工作带来很大的方便。 5、批量删除空行 有时我们需要删除Excel工作薄中的空行,一般做法是将空行一一找出,然后删除。如果工作表的行数很多,这样做就非常不方便。我们可以利用“自动筛选”功能,把空行全部找到,然后一次性删除。 做法:先在表中插入新的一个空行,然后按下Ctrl+A键,选择整个工作表,用鼠标单击“数据”菜单,选择“筛选”项中的“自动筛选”命令。这时在每一列的顶部,都出现一个下拉列表框,在典型列的下拉列表框中选择“空白”,直到页面内已看不到数据为止。 在所有数据都被选中的情况下,单击“编辑”菜单,选择“删除行”命令,然后按“确定”按钮。这时所有的空行都已被删去,再单击“数据”菜单,选取“筛选”项中的“自动筛选”命令,工作表中的数据就全恢复了。插入一个空行是为了避免删除第一行数据。 如果想只删除某一列中的空白单元格,而其它列的数据和空白单元格都不受影响,可以先复制 此列,把它粘贴到空白工作表上,按上面的方法将空行全部删掉,然后再将此列复制,粘贴到原工作表的相应位置上。 6、如何避免错误信息 在Excel中输入公式后,有时不能正确地计算出结果,并在单元格内显示一个错误信息,这些错误的产生,有的是因公式本身产生的,有的不是。下面就介绍一下几种常见的错误信息,并提出避免出错的办法。 1)错误值:#### 含义:输入到单元格中的数据太长或单元格公式所产生的结果太大,使结果在单元格中显示不下。或是日期和时间格式的单元格做减法,出现了负值。 解决办法:增加列的宽度,使结果能够完全显示。如果是由日期或时间相减产生了负值引起的,可以改变单元格的格式,比如改为文本格式,结果为负的时间量。 2)错误值:#DIV/0! 含义:试图除以0。这个错误的产生通常有下面几种情况:除数为0、在公式中除数使用了空单元格或是包含零值单元格的单元格引用。 解决办法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。
3)错误值:#VALUE! 含义:输入引用文本项的数学公式。如果使用了不正确的参数或运算符,或者当执行自动更正公式功能时不能更正公式,都将产生错误信息#VALUE!。 解决办法:这时应确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如,单元格C4中有一个数字或逻辑值,而单元格D4包含文本,则在计算公式=C4+D4时,系统不能将文本转换为正确的数据类型,因而返回错误值#VALUE!。 4)错误值:#REF! 含义:删除了被公式引用的单元格范围。 解决办法:恢复被引用的单元格范围,或是重新设定引用范围。 5)错误值:#N/A 含义:无信息可用于所要执行的计算。在建立模型时,用户可以在单元格中输入#N/A,以表明正在等待数据。任何引用含有#N/A值的单元格都将返回#N/A。 解决办法:在等待数据的单元格内填充上数据。 6)错误值:#NAME? 含义:在公式中使用了Excel所不能识别的文本,比如可能是输错了名称,或是输入了一个已删除的名称,如果没有将文字串括在双引号中,也会产生此错误值 解决办法:如果是使用了不存在的名称而产生这类错误,应确认使用的名称确实存在;如果是名称,函数名拼写错误应就改正过来;将文字串括在双引号中;确认公式中使用的所有区域引用都使用了冒号(:)。例如:SUM(C1:C10)。 注意将公式中的文本括在双引号中。 7)错误值:#NUM! 含义:提供了无效的参数给工作表函数,或是公式的结果太大或太小而无法在工作表中表示。 解决办法:确认函数中使用的参数类型正确。如果是公式结果太大或太小,就要修改公式,使其结果在-1×10307和1×10307之间。 8)错误值:#NULL! 含义:在公式中的两个范围之间插入一个空格以表示交叉点,但这两个范围没有公共单元格。比如输入:“=SUM(A1:A10 C1:C10)”,就会产生这种情况。
解决办法: 取消两个范围之间的空格。上式可改为“=SUM(A1:A10 ,C1:C10)”
Part 2: EXCEL自学资料第一集
返回首页
自学资料第一集 1、Application.CommandBars("Worksheet Menu Bar").Enabled = false 2、cells(activecell.row,"b").value '活动单元格所在行B列单元格中的值 3、Sub CheckSheet()'如果当前工作薄中没有名为kk的工作表的话,就增加一张名为kk的工作表,并将其排在工作表从左至右顺序排列的最左边的位置,即排在第一的位置 Dim shtSheet As Worksheet For Each shtSheet In Sheets If shtSheet.Name = "KK" Then Exit Sub Next shtSheet Set shtSheet = Sheets.Add(Before:=Sheets(1)) shtSheet.Name = "KK" End Sub 4、Sheet1.ListBox1.List = Array("一月", "二月", "三月", "四月")'一次性增加项目 5、Sheet2.Rows(1).Value = Sheet1.Rows(1).Value'将一个表中的一行全部拷贝到另一个表中 6、Sub pro_cell()'将此代码放入sheet1,则me=sheet1,主要是认识me Me.Unprotect Cells.Locked = False Range("D11:E11").Locked = True Me.Protect End Sub 7、Application.CommandBars("Ply").Enabled = False'工作表标签上快捷菜单失效 8、Sub aa()'把B1到B12单元格的数据填入c1到c12 For i = 1 To 12 Range("C" & i) = Range("B" & i) Next i End Sub 9、ActiveCell.AddComment Selection.Font.Size = 12'在点选的单元格插入批注,字体为12号 10、Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub 11、ScrollArea 属性 参阅应用于示例特性以 A1 样式的区域引用形式返回或设置允许滚动的区域。用户不能选定滚动区域之外的单元格。String 类型,可读写。 说明 可将本属性设置为空字符串 ("") 以允许对整张工作表内所有单元格的选定。 示例 本示例设置第一张工作表的滚动区域。 Worksheets(1).ScrollArea = "a1:f10"
12\if application.max([a1:e1])=10 then msgbox"" commandbutton1.enabled=false 'A1—E1最大的数值达到10时,自动弹出对话框,并冻结按钮 12、本示例将更改的单元格的颜色设为蓝色。 Private Sub Worksheet_Change(ByVal Target as Range) Target.Font.ColorIndex = 5 End Sub 13、Sub test()'求和 Dim rng As Range, rng2 As Range For Each rng In ActiveSheet.UsedRange.Columns Set rng2 = Range(Cells(1, rng.Column), Cells(Cells(65536, rng.Column).End(xlUp).Row, rng.Column)) rng2.Cells(rng2.Cells.Count).Offset(1, 0) = WorksheetFunction.Sum(rng2) Next rng End Sub 14、将工作薄中的全部n张工作表都在sheet1中建上链接 Sub test2() Dim Pt As Range Dim i As Integer With Sheet1 Set Pt = .Range("a1") For i = 2 To ThisWorkbook.Worksheets.Count .Hyperlinks.Add Anchor:=Pt, Address:="", SubAddress:=Worksheets(i).Name & "!A1" Set Pt = Pt.Offset(1, 0) Next i End With End Sub 15、保存所有打开的工作簿,然后退出 Microsoft Excel。 For Each w In Application.Workbooks w.Save Next w Application.Quit 16、让form标题栏上的关闭按钮失效 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode <> 1 Then Cancel = True End Sub 17、Sub countsh()'获得工作表的总数 MsgBox Sheets.Count End Sub 18、Sub IE()'打开个人网页 ActiveWorkbook.FollowHyperlink "about:blank" SendKeys "{F4}ykk1976.anyp.cn{ENTER}", True End Sub
19、Sub delback()'一次性删除工作簿中所有工作表的背景 For Each shtSheet In Sheets shtSheet.SetBackgroundPicture Filename:="" Next shtSheet End Sub 20、[a1].formula="=b1+c1"'A1中设定公式为=B1+C1 21、Private Sub CommandButton1_Click()'将A1到C6中大于=3的数依次放入E列 Dim i As Long r = 1 For Each i In Range("a1:c6") If i > =3 Then Cells(r, 5) = i: r = r + 1 Next End Sub 22、Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)'显示带数字的表名 b = Split(Sh.Name, "(") On Error GoTo ss num = CInt(Left(b(1), Len(b(1)) - 1)) If num >= 1 And num < 20 Then MsgBox Sh.Name End If Exit Sub ss: MsgBox "error", 16, "" End Sub 23、Sub Test()'选择所有工作表名以"业报"开头的工作表或头两个字是业报的报表名引用 Set Sh = ActiveSheet If Left(Sh.Name, 2) = "业报" Then ' 或if sh.name like"业报*"then MsgBox "你成功了", 64, "" End If End Sub 24、1.建立文件夹的方法 MkDir "D:\Music" 2.打开文件夹的方法 ActiveWorkbook.FollowHyperlink Address:="D:\Music", NewWindow:=True 25、在当前工作表翻页 Application.SendKeys "{PGUP}", True Application.SendKeys "{PGDN}", True 或者 ActiveWindow.LargeScroll Down:=1 ActiveWindow.LargeScroll Down:=-1 26、当Target = "*小计"时如何写,*代表任何字符。 if instr(target.value,"小计")<>0 then Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value Like "*小计" Then MsgBox "OK" End Sub 27、ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[14]C,R[59]C:R[78]C)" 这是相对引用的写法:根据推算你的函数是放在“AD6”单元格 你的函数:=SUM(R[1]C:R[14]C 中的 "R"表示行 "C"表示列。 R[1]表示“AD6+1行",C表示“列没有变化,就是同列”那么:R[1]C就表示AD7 同理,R[14]表示AD6+14行,表示:AD20。以此类推。 28、Private Sub CommandButton1_Click()'将A1到C6中大于=3的数依次放入E列 Dim i As Long Dim iRng As Range For Each iRng In Sheets(1).Range("a1:c6") If iRng.Value >= 3 Then i = i + 1 Sheets(1).Range("E" & i).Value = iRng.Value End If Next End Sub 29、工作表中的窗体按钮禁用后,按钮形状不变,字体不变,从外表上无法看出其已禁用,如何设置属性使其像控件按纽那样明显的禁用? With ActiveSheet.Buttons(1) .Enabled = False ActiveSheet.Shapes(.Caption).DrawingObject.Font.ColorIndex = 15 End With 復原的方法 With ActiveSheet.Buttons(1) .Enabled = True ActiveSheet.Shapes(.Caption).DrawingObject.Font.ColorIndex = xlAutomatic End With 30、Private Sub Worksheet_SelectionChange(ByVal Target As Range'选定A1时要输入密码 If Target.Address = "$A$1" Then A = InputBox("请输入密码", "officefans") If A = 1 Then [A1].Select Else [A2].Select End If End Sub 31、如何将工作薄中的命名单元格成批删除! Dim Item As Name For Each Item In ActiveWorkbook.Names Item.Delete Next Item 32、平时只能看到表1,如要看表2和表3,只能通过表1的链接打开,且表2和表3回到表1后,又不可见。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$3" Then '当点击"$A$3"单元格时... Sheet2.Visible = 1 '取消隐藏
Sheet2.Activate '激活 ActiveSheet.Range("A1").Select End If If Target.Address = "$A$6" Then Sheet3.Visible = 1 '取消隐藏 Sheet3.Activate ActiveSheet.Range("A1").Select End If End Sub 33、将a2单元格内容替换为a1内容 ActiveCell.Replace What:=[a2], Replacement:=[a1] 34、如果是要填入名称,则: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Selection.Value = ComboBox1.column(1) End Sub 如果是要填入代码和名称的组合 : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Selection.Value = cstr(ComboBox1.column(0))+" "+combobox1.column(1) End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Selection.Value = ComboBox1.Value End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'target.row 代表行号 'target.column 代表列号 i=target.row '获取行号 j=target.column '获取列号 End Sub 35、当激活工作表时,本示例对 A1:A10 区域进行排序。 Private Sub Worksheet_Activate() Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending End Sub 36、BeforePrint 事件 参阅应用于示例特性在打印指定工作簿(或者其中的任何内容)之前,产生此事件。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则当该过程运行结束之后不打印工作簿。 示例 本示例在打印之前对当前活动工作簿的所有工作表重新计算。 Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each wk in Worksheets wk.Calculate Next End Sub
37、Open 事件 参阅应用于示例特性打开工作簿时,将产生本事件。 Private Sub Workbook_Open() 示例 每次打开工作簿时,本示例都最大化 Microsoft Excel 窗口。 Private Sub Workbook_Open() Application.WindowState = xlMaximized End Sub 38、ActiveSheet 属性 参阅应用于示例特性返回一对象,该对象代表活动工作簿中的,或者指定的窗口或工作簿中的活动工作表(最上面的工作表)。只读。如果没有活动的工作表,则返回 Nothing。 说明 如果未给出对象识别符,本属性返回活动工作簿中的活动工作表。 如果某一工作簿在若干个窗口中出现,那么该工作簿的 ActiveSheet 属性在不同窗口中可能不同。 示例 本示例显示活动工作表的名称。 MsgBox "The name of the active sheet is " & ActiveSheet.Name 39、Calculate 方法 参阅应用于示例特性计算所有打开的工作簿、工作簿中的一张特定的工作表或者工作表中指定区域的单元格,如下表所示: 要计算 依照本示例 所有打开的工作簿 Application.Calculate (或只是 Calculate) 指定工作表 指定工作表 指定区域 Worksheets(1).Rows(2).Calculate expression.Calculate expression 对于 Application 对象可选,对于 Worksheet 对象和 Range 对象必需。该表达式返回“应用于”列表中的对象之一。 示例 本示例计算 Sheet1 已用区域中 A 列、B 列和 C 列的公式。 Worksheets("Sheet1").UsedRange.Columns("A:C").Calculate 程序的核心是算法问题 40、End 属性 参阅应用于示例特性返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。 expression.End(Direction) expression 必需。 该表达式返回“应用于”列表中的对象之一。 Direction XlDirection 类型,必需。所要移动的方向。 XlDirection 可为 XlDirection 常量之一。 xlDown xlToRight xlToLeft xlUp 示例 本示例选定包含单元格 B4 的区域中 B 列顶端的单元格。
Range("B4").End(xlUp).Select 本示例选定包含单元格 B4 的区域中第 4 行尾端的单元格。 Range("B4").End(xlToRight).Select 本示例将选定区域从单元格 B4 延伸至第四行最后一个包含数据的单元格。 Worksheets("Sheet1").Activate Range("B4", Range("B4").End(xlToRight)).Select 41、应用于 CellFormat 和 Range 对象的 Locked 属性。 本示例解除对 Sheet1 中 A1:G37 区域单元格的锁定,以便当该工作表受保护时也可对这些单元格进行修改。 Worksheets("Sheet1").Range("A1:G37").Locked = False Worksheets("Sheet1").Protect 42、Next 属性 参阅应用于示例特性返回一个 Chart、Range 或 Worksheet 对象,该对象代表下一个工作表或单元格。只读。 说明 如果指定对象为区域,则本属性的作用是仿效 Tab,但本属性只是返回下一单元格,并不选定它。 在处于保护状态的工作表中,本属性返回下一个未锁定单元格。在未保护的工作表中,本属性总是返回紧靠指定单元格右边的单元格。 示例 本示例选定 sheet1 中下一个未锁定单元格。如果 sheet1 未保护,选定的单元格将是紧靠活动单元格右边的单元格。 Worksheets("Sheet1").Activate ActiveCell.Next.Select 43、想通过target来设置(A1:A10)区域内有改动,就发生此事件。不知道如何 if target.row = 1 and target.column <=10 then Sub 列举菜单项() Dim r, s, i As Integer r = 1 For i = 1 To CommandBars.Count ActiveSheet.Cells(r, 1) = "CommandBars(" & i & ").Name:" & CommandBars(i).Name r = r + 1 For s = 1 To CommandBars(i).Controls.Count ActiveSheet.Cells(r, 1) = s & "、" & CommandBars(i).Controls(s).Caption r = r + 1 Next Next End Sub 44、本示例设置 Microsoft Excel 每当打开包含链接的文件时,询问用户是否更新链接。 Application.AskToUpdateLinks = True 45、自定义函数 Public Function Now1() Dim string1 As String string1 = VBA.Date Now1 = string1
End Function 46、复制 Sub copy1() Sheet2.Range("C5:C10").Copy Sheet1.Range("C5:C10") End Sub 47、如何统计表中sheet的个数? msgbox sheets.count Columns("G:G").Select 48、 Selection.EntireColumn.Hidden = True 这样隐藏有个毛病,如何解决?如果A1:G1单元格合并的话,就把A:G列均隐藏了。 Columns("G:G").EntireColumn.Hidden = True 49、在VBA中引用excel函数的方法 1). Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" 2). Sheet1.Cells(1,1).Formula = "=" & Sheets(iii).Name & "!R1C4" 在宏中用R1C1方式写时表格1的A1中会在写为“=Sheet2!$D$1” 用这种方式,想用什么函数就用什么函数. 50、选定下(上)一个工作表 sheets(activesheet.index-1).select sheets(activesheet.index+1).select 51、Private Sub Workbook_Open() ActiveWindow.DisplayWorkbookTabs = False '取消工作表标签 Application.CommandBars("Sheet").Controls(1).Enabled = False '格式_工作表不能重命名 Application.CommandBars.FindControl(ID:=889).Enabled = False '右键菜单不能重命名 End Sub 52、 [a65536].End(xlUp’A列从下往上第一个非空的单元格 53、Sub macro() Set rng = Range("C11:F13") 定义RNG为一个单元格区域 For Each cel In rng 定义CEL为RNG中的一个任一单元格 colo = cel.Interior.ColorIndex 定义 COLO 为单元格CEL的填充颜色 If colo <> -4142 Then 如果COLO的值不等于-4142 iR = [b65536].End(xlUp).Row + 1 IR等于B列数据区域的行数+1 If [a65535].End(xlUp).Value <> Cells(cel.Row, 2) Then Cells(iR, 1) = Cells(cel.Row, 2) 如果A列最后一个非空值单元格 不等于Cells(cel.Row, 2) 的值 那么单元格Cells(iR, 1) 的值等于Cells(cel.Row, 2) 的值 CEL.ROW是C11:F13中任意单元格的行号 Cells(iR, 2) = Cells(10, cel.Column) Cells(iR, 3) = cel.Value Cells(iR, 4) = IIf(colo = 36, "Yellow", "Red") Cells(iR, 4) 的值如果colo = 36那么值为"Yellow",否则值为"RED" next End Sub 54、Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) '**********运行数据日志记录********** Dim rng As Range If ActiveSheet.Name <> "主界面" And ActiveSheet.Name <> "目录索引" Then
For Each rng In Target.Cells Changecell = ActiveSheet.Name & ",单元格:" & rng.Address(0, 0) & ",更改为:" & rng.value & "。更改时间:" & Now CritOrAddtext Next End If End Sub 55、ActiveSheet.Unprotect '撤销当前工作表保护 If ActiveSheet.Name <> "主界面" And ActiveSheet.Name <> "目录索引" And Target.Row > 3 Then '行变色 On Error Resume Next [ChangColor_With].FormatConditions.Delete Target.EntireRow.Name = "ChangColor_With" With [ChangColor_With].FormatConditions .Delete .Add xlExpression, , "TRUE" .Item(1).Interior.ColorIndex = 4 End With End If ActiveSheet.Protect 56、在C1中弄个下拉无表,实际是有效性,你可以选择A1:A4为C1单元格有效性的序列数据源,如果说C1不与A1:A4在同一表,则不能这么用,应当先对A1:A4命名,然后把数据源改为名称. 57、自动增加工作表 进入宏命令编辑窗口,在Sub 自动增加工作表()命令后依次键入如下宏命令内容: Dim i&, userinto i = 0 userinto = InputBox("输入插入工作表数量:") If IsNumeric(userinto) = True Then Do Until i = userinto Worksheets.Add i = i + 1 Loop End If End Sub 58、方法一(共享级锁定): 1、先对EXCEL文件进行一般的VBAProject”工程密码保护。 2、打开要保护的文件,选择:工具--->保护--->保护并共享工作簿--->以追踪修订方式共享-->输入密码-->保存文件。 完成后,当你打开“VBAProject”工程属性时,就将会提示:“工程不可看!“ 方法二(推荐,破坏型锁定): 用16进制编辑工具,如WinHex、Ultraedit-32(可到此下载)等,再历害点的人完全可以用debug命令来做......用以上软件打开EXCEL文件,查找定位以下地方: ID="{00000000-0000-0000-0000-000000000000}" 注:实际显示不会全部为0 此时,你只要将其中的字节随便修改一下即可。保存再打开,就会发现大功告成!
当然,在修改前最好做好你的文档备份。至于恢复只要将改动过的地方还原即可(只要你记住了呵呵)。 顺便说一句,这种方法仍然是可破解的,因为加密总是相对的 。 59、Sub AddComments() '自動對ActiveSheet所有有公式格位加上註解 Set RG = Cells.SpecialCells(xlCellTypeFormulas) For Each c In RG c.AddComment c.Comment.Text Text:=c.Formula Next c End Sub Sub De_Comments() '自動消除所有註解 Set RG = Cells.SpecialCells(xlCellTypeFormulas) For Each c In RG c.ClearComments Next c End Sub 60、如何在Excel里使用定时器 www.aspsky.net 2002-3-12 20:53:27 动网先锋 用过 Excel 97 里的加载宏 "定时保存" 吗?可惜它的源程序是加密的,现在就上传一篇介绍实现它的文档。 在 Office 里有个方法是 application.ontime ,具体函数如下: expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule) 如果想进一步了解,请参阅 Excel 的帮助。 这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在 Excel 里编写自己的定时程序了。下面就举两个例子来说明它。 1.在下午 17:00:00 的时候显示一个对话框。 Sub Run_it() Application.OnTime TimeValue("17:00:00"), "Show_my_msg" '设置定时器在 17:00:00 激活,激活后运行 Show_my_msg 。 End Sub Sub Show_my_msg() msg = MsgBox("现在是 17:00:00 !", vbInformation, "自定义信息") End Sub 2.模仿 Excel 97 里的 "自动保存宏",在这里定时 5 秒出现一次 Sub auto_open() MsgBox "欢迎你,在这篇文档里,每 5 秒出现一次保存的提示!", vbInformation, "请注意!" Call runtimer '打开文档时自动运行 End Sub Sub runtimer() Application.OnTime Now + TimeValue("00:00:05"), "saveit" ' Now + TimeValue("00:15:00") 指定在当前时间过 5 秒钟开始运行 Saveit 这个过程。 End Sub Sub SaveIt()
msg = MsgBox("朋友,你已经工作很久了,现在就存盘吗?" & Chr(13) _ & "选择是:立刻存盘" & Chr(13) _ & "选择否:暂不存盘" & Chr(13) _ & "选择取消:不再出现这个提示", vbYesNoCancel + 64, "休息一会吧!") '提示用户保存当前活动文档。 If msg = vbYes Then ActiveWorkbook.Save Else If msg = vbCancel Then Exit Sub Call runtimer '如果用户没有选择取消就再次调用 Runtimer End Sub 以上只是两个简单的例子,有兴趣的话,可以利用 Application.Ontime 这个函数写出更多更有用的定时程序。 Sub Show_my_msg() msg = MsgBox("现在是 17:00:00 !", vbInformation, "自定义信息") End Sub 2.模仿 Excel 97 里的 "自动保存宏",在这里定时 5 秒出现一次 Sub auto_open() MsgBox "欢迎你,在这篇文档里,每 5 秒出现一次保存的提示!", vbInformation, "请注意!" Call runtimer '打开文档时自动运行 End Sub Sub runtimer() Application.OnTime Now + TimeValue("00:00:05"), "saveit" ' Now + TimeValue("00:15:00") 指定在当前时间过 5 秒钟开始运行 Saveit 这个过程。 End Sub
61、Excel 最重要的应用就是利用公式进行计算。无论输入是纯粹的数字运算,还是引用其他单元格计算,只要在一个单元格中输入公式,就能得到结果。这个直接显示结果的设计对于绝大多数场合来说都是适用的,但某些情况下就不那么让人满意了。比如说在做工程施工的预结算编写,使用Excel,既要写出工程量的计算式,也要看到它的结果,于是这样相同的公式在Excel里面要填两次,一次在文本格式的单元格中输入公式,一次是在数据格式的单元格中输入公式让Excel计算结果。如何既能看到公式又能看到结果呢?这个问题笔者认为可以从两个方面考虑:一种方法是所谓“已知结果,显示公式”,先在数据格式单元格中输入公式让Excel计算结果,然后在相邻的单元格中看到公式;另一种方法所谓“已知公式,显示结果”,就是先在一个文本格式的单元格中输入公式,在相邻的单元格中看到结果。★已知结果,显示公式 假设C列为通过公式计算得到的结果(假设C1为“=A1+B1”,或者直接是数字运算“=2+3”),而相邻的D列是你需要显示公式的地方(即D1应该显示为“=A1+B1”或者“=2+3”)。 1. 打开“工具”菜单选择“选项”命令,出现“选项”对话框。 2. 在“常规”选项卡中,选中“R1C1引用方式”选项。 3. 定义名称,将“引用位置”由“=GET.CELL(6,Sheet1!RC[-1])”即可。这里的RC[-1]含义是如果在当前单元格的同行前一列单元格中有公式结果,则在当前单元格中得到公式内容,即在含公式结果单元格的同行后一列单元格显示公式内容;如果将RC[-1]改为RC[1],则在公式结果的同行前一列单元格显示公式内容。 4. 如果“引用位置”中含有“RC[-1]”,则在含公式结果单元格的同行后一列单元格中输入“=FormulaofResult”即可得到公式;如果“引用位置”中含有“RC[1]”,则在含公式结果单元格的同行前一列单元格中输入“=FormulaofResult”即可得到公式。 提示:如果想要在含公式结果单元格的同行后数第2列中显示公式内容,则需要把“引用位置”中的“RC -1 ”改为“RC -2 ”。
★已知公式,显示结果 假设C列为输入的没有等号公式(假设C1为“A1+B1”),而相邻的D列是你需要存放公式计算结果的地方(即D1显示A1和B1单元格相加的结果)。 1. 选中D1,然后打开“插入”菜单选择“名称”命令中的“定义”子命令,出现“定义名称”对话框。 2. 在“在当前工作表中的名称”输入栏中输入定义的名称“ResultofFomula”,在下方的“引用位置”编辑栏中输入“=EVALUATE(Sheet1!C1)”,单击[确认]按钮退出。 3. 在 D1中输入“=ResultofFomula”,然后选中按住右下角的填充柄向下拉动填充即可。 提示:EVALUATE  是Eexcel 4.0版的宏表函数,Excel 2000和Excel 2002中还支持,但只可用于名称定义中。 4. 填充后要按[F9]进行重算,如果C列的公式有改动,也需要及时按[F9]进行重算。 巧施妙计,就能让公式和结果在Excel中和平共处了,你也试试吧。 62、http://www.yesky.com/20010724/190094_3.shtml Microsoft Excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用Excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。但Excel的强大远远超过人们的想象--宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。 随着支持Windows的应用程序的不断增多和功能的不断增强,越来越多的程序增加了宏处理来方便用户的自由扩展。但初期各应用程序所采用的宏语言并不统一,这样用户每使用一种应用程序时都得重新学习一种宏语言。为了统一各种应用程序下的宏,Microsoft推出了VBA(Visual Basic for Applications)语言。 VBA是从流行的Visual Basic编程语言中派生出来的一种面向应用程序的语言,它适用于各种Windows应用程序,可以解决各应用程序的宏语言不统一的问题。除此之外,使用VBA语言还有如下优点:1、VBA是一种通用程序语言,通过它不仅可以共享Microsoft相关的各种软件(如Excel、Word、Access)……,而且随着其它的一些软件(如大名鼎鼎的AutoCAD2000)等对VBA的支持,这些软件也已进入到了VBA的控制范围;2、可以将用VBA编写的程序复制到Visual Basic中调试并运行,从而实现用Visual Basic来控制有关的应用程序;3、VBA提供的大量内部函数大大简化了用户的操作。 对于而今的宏,不仅语言统一规范,而且其功能也已非常强大。但在大多数介绍Excel的"傻瓜书"、"指南"、"入门与提高"等参考书中往往略过不提,或浅浅带过,读者从中获得的有关知识往往不足以应付处理复杂数据的需求。为了完成工作,就让我们一起来学习"宏"的妙用吧。 一)、宏的自学 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏:点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿:Workbooks、Workbook、ActiveWorkbook、ThisWorkbook Workbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks(1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。
2、工作表:Worksheets、Worksheet、ActiveSheet Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets(1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置:第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是:在使用过程中Excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。 3、图表:Chart 、Charts、ChartObject、ChartObjects、ActiveChart Chart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index) 可引用单个Chart图表,其中index是该图表工作表的索引号或名称;如Charts(1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts(1)是工作簿中第一个(最左边的)图表工作表;Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject可以控制工作表上嵌入式图表的外观和尺寸。 ChartObjects代表指定的图表工作表、对话框编辑表或工作表上所有嵌入式图表的集合。可由ChartObjects(index)引用单个ChartObject,其中index为嵌入式图表的编号或名称。如Worksheets("Sheet1").ChartObjects(1)、Worksheets("sheet1").ChartObjects("chart1")分别对应"Sheet1"工作表中的第一个嵌入式图表、以及名为"Chart1"的嵌入式图表。 ActiveChart可以引用活动状态下的图表,不论该图表是图表工作表,或嵌入式图表。而对于图表工作表为活动工作表时,还可以通过ActiveSheet属性引用之。 4、单元格:Cells、ActiveCell、Range、Areas Cells(row,column)代表单个单元格,其中row为行号,column为列号。如可以用Cells(1,1)、Cells(10,4)来引用"A1"、"D10" 单元格。ActiveCell代表活动工作表的活动单元格,或指定工作表的活动单元格。 Range代表工作表中的某一单元格、某一行、某一列、某一选定区域(该选定区域可包含一个或若干连续单元格区域)或者某一三维区域。 可用Range(arg)来引用单元格或单元格区域,其中arg可为单元格号、单元格号范围、单元格区域名称。如Range("A5")、Range("A1:H8")、Range("Criteria")。虽然可用Range("A1")返回单元格A1,但用Cells更方便,因为此时可用变量指定行和列。 可将Range与Cells结合起来使用,如Range(Cells(1,1),Cells(10,10))代表单元格区域"A1:J10";而expression.Cells(row,column)返回单元格区域中的一部分,其中expression是返回Range的表达式,row和column为相对于该区域的左上角偏移量。如由Range("C5:C10").Cells(1,1)引用单元格C5。 Areas为选定区域内的连续单元格块的集合,其成员是Range对象。而其中的每个Range对象代表选定区域内与其它部分相分离的一个连续单元格块。某些操作不能在选定区域内的多个单元格块上同时执行;必须在选定区域内的单元格块数Areas.Count上循环,对每个单独的单元格块分别执行该操作。此时,可用Areas(index)从集合中返回单个Range对象,其中index为单元格块编号;如Areas(1)。 5、 行与列:Rows、Columns、Row、Column Rows、Columns分别代表活动工作表、单元格区域范围Range、指定工作表中的所有行数、列数。对于一个多选单元格区域范围Range的Rows、Columns,只返回该范围中第一个区域的行数、列数。例如,如果Range对象有两个区域(areas)A1:B2和C3:D4,Rows.Count返回2而不是4。
可通过Rows(行号)、Columns(列号)来引用相应的行与列;如Rows(3)、Columns(4)分别对应第三行、D列。 利用Rows、Column可以获得区域中第一块的第一行行号、第一列列号,所得值均以十进制数表示。 三)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量,这是在Excel中最简单的单元格赋值及引用方法。如下例将工作表"Sheet1"A1单元格的值赋给Integer变量I,并将I+1的值赋给当前工作表中的B1单元格: Dim I As Integer I=Worksheets("Sheet1").Cells(1,1) Cells(1,2).Select '选定B1单元格,使其成为当前单元格 ActiveCell=I+1 '以I+1为当前单元格赋值 2、用公式赋值 在宏的使用中,可能会更多地用公式来给单元格赋值。如下例将相对于活动单元格左侧第4列、向上第6行至向上第2行的单元格数值之和赋给活动单元格(以本行、本列为第0行、0列): ActiveCell.Formula="=AVERAGE(R[-6]C[-4]:R[-2]C[-4])" 3、引用其它工作表中的单元格 当赋值公式中需要引用其它工作表中的单元格时,在被引用的单元格前加上"工作表名!"即可。如以下即在赋值中引用了"Sheet1"工作表中的A1至A4单元格: Range("E10").Formula="=SUM(Sheet1!R1C1:R4C1)" 但需注意的是:当被引用的工作表名中含有某些可能引起公式歧义的字符时,需要用单引号'将工作表名括起来。如: Worksheets("Sheet1").ActiveCell.Formula="=Max('1-1剖面'!D3:D5)" 4、引用其它工作簿中的单元格 在被引用单元格所在工作表名前加上"[工作簿名]",即可引用其它工作簿中的单元格。如: ActiveCell.Formula="=MAX([Book1.xls]Sheet3!R1C:RC[4])" 同样需注意的是:当被引用的工作簿名中含有某些可能引起公式歧义的字符时,需要用中括号"["、"]"及单引号'将工作簿名括起来。如: Cells(1,2).Formula="=MIN('[1995-2000总结.xls]1995-1996年'! $A$1:$A$6)" 5、避免循环引用 在上述公式赋值过程中,应避免在公式中引用被赋值的单元格,防止循环引用错误。 6、添加批注 可按如下方法格给单元格添加批注: Dim 批注文本 As String 批注文本="批注示例" '准备批注文本 ActiveCell.AddComment '添加批注 ActiveCell.Comment.Text Text:=临时 '写入批注文本 ActiveCell.Comment.Visible=False '隐藏批注 7、添加、删除、复制、剪切、粘贴单元格 Range("D10").Insert Shift:=xlToRight '在D10单元格处添加一新单元格,原D10格右移 Range("C2").Insert Shift:=xlDown '在C2单元格处添加一新单元格,原C2格下移 Rows(2).EntireRow.Insert '在第2行前添加一空白行,原第2行下移 Columns(3).EntireColumn.Insert '在C列前添加一空白列,原C列右移 Columns("A:D").Delete Shift:=xlToLeft '删除A列至D列,其右侧列左移
Rows("3:5").Delete Shift:=xlUp '删除第3行至第5行,其下方行上移 Range("B2").EntireRow.Delete '删除第2行 Range("C4").EntireColumn.Delete '删除C列 Range("B10:C13").Copy '复制B10至C13单元格区域 Cells(1,2).Cut '剪切B1单元格 Range("D10").Select ActiveSheet.Paste '自D10单元格起粘贴剪贴板中的内容 四)、图表 1、工作表图表 以下为一添加工作表图表的实例。 Charts.Add after:=Worksheets("Sheet1") '在"Sheet1"工作表之后添加新图表工作表 ActiveChart.ChartType=xlXYScatterSmooth '图表类型为XY平滑线散点图 ActiveChart.SetSourceData Source:=Sheets("结点坐标").Range("A1:B69"), PlotBy:= _ xlColumns '图表数据来源于"结点坐标"工作表的A1至B69单元格,且按列绘图。 ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "节点坐标" '图表标题"节点坐标" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x" 'x轴标题"x" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y" 'y轴标题"y" End With With ActiveChart.Axes(xlCategory) .HasMajorGridlines = True '显示x轴主网格线,默认情况下为显示 .HasMinorGridlines = True '显示x轴次网格线,默认情况下为不显示 End With With ActiveChart.Axes(xlValue) .HasMajorGridlines = True '标出x轴主网格值,默认情况下为标注 .HasMinorGridlines = False '取消x轴次网格值标注,默认情况下为不标注 End With ActiveChart.Legend.Position = xlRight '图例显示在图表右侧 2、嵌入式图表 嵌入式图表仅在添加方式及引用格式上与工作表图表有所不同,而对图表的设置基本类似。详见下例。 Set嵌入表=ActiveSheet.ChartObjects.Add(0,0,200,300) '在当前工作表(0,0)坐标处添加宽200,高300的嵌入式图表 嵌入表.Chart.ChartType = xlColumnClustered '图表类型为簇状柱形图 嵌入表.Chart.SetSourceData Source:=Sheets(1).Range("A2:B2"), PlotBy:=xlRows '设置图表数据来源 With 嵌入表.Chart .HasTitle = False '无图表标题 .Axes(xlCategory, xlPrimary).HasTitle = False '无x轴标题 .Axes(xlValue, xlPrimary).HasTitle = False '无y轴标题 End With
五)、工作表 1、添加 Sheets.Add before:=Sheets(1) '在第1工作表前添加新工作表 Sheets.Add after:=Sheets(Sheets.Count) '在最后工作表后添加新工作表 2、移动 ActiveSheet.Move before:=Sheets(2) '将当前工作表移动至第2工作表之前 3、命名 ActiveSheet.Name="工作表名" '将当前工作表命名为"工作表名" 4、删除 可以用以下语句删除当前工作表。 ActiveSheet.Delete 但在删除前Excel会自动弹出提示框,需在用户确认后方可执行删除。为避免这一干扰,可以先用以下语句关闭Excel的警告提示。 Application.DisplayAlerts = False 在删除完成后,再重新打开Excel的警告提示 Application.DisplayAlerts = True 六)、工作簿 Excel的宏对工作簿的操作主要为保存。 Dim 存盘文件名 As String ActiveWorkbook.Save '保存当前工作簿 存盘文件名="工作表名" ActiveWorkbook.SaveAs Filename:= 存盘文件名 '当前工作簿另存为"工作表名.xls" 在另存时,若指定的存盘文件名不包含路径,则保存在该工作簿的打开目录下。而若此存盘文件已存在,也可用关闭Excel警告提示的方法以免其自动弹出提示框。 63、用VBA的几个误区 1、想通过Excel+vba来编程发财,不管怎么说,目前这种可能性很小。 2、录制宏后的代码不进行简化,这种情况初学者常犯;或者不屑于用录制宏,这种相反。 3、喜欢用.select、.copy、.active等,如果不是迫不得已,还是不要用这些东西好。 4、不喜欢用公式、函数,什么都喜欢用程序;活用公式函数是我们学EXCEL中重要的重点,学会嵌套着用,很多事情都可以解决。譬如表1的A1单元格如果要等于表2的A列中的某个单元格,很多人都是用程序来直接赋值,数量少这也可以,但如果数量很多的话,为何不试用一下offset呢?偏移都指向同一个单元格,就当是一个变量,改一下这个单元格的值,表1用offset的单元格的值就全部改了。 5、设计输入数据的界面竟然用用户窗口+文本框之类的东西,天,我为什么要用EXCEL,原因之一不就是图个方便吗?!直接在工作表中操作就是输入数据最好的方法,如果一些功能你不想给别人用,顶多你屏蔽掉吧。 6、关闭程序的时候很喜欢退出整个EXCEL,这样自我感觉更象一个完整的程序。其实完全有必要考虑其他用户是否也在用EXCEL,所以,必须做好一下判断,不要自作聪明全部退出来,还帮忙把每个工作簿都保存一下。 7、不喜欢用with,总是workbook("").worksheet("").range("").***一行行排得挺整齐的,还说都用复制,其实也不麻烦。 8、总想把VBA+EXCEL做得象一个程序一样,其实,就因为它不独立,所以才更加为我们喜爱,不是吗? 64、用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明A为整形变量
Dim a '声明A为变体变量 Dim a as string '声明A为字符串变量 Dim a,b,c as currency '声明A,b,c为货币变量 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数,用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 删除当前单元格中数据的前后空格。 sub my_trim Trim(ActiveCell.Value) end sub 使单元格位移 sub my_offset ActiveCell.Offset(0, 1).Select'当前单元格向左移动一格 ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格 ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格 ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格 end sub 如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往 sub my_offset 之下加一段代码 on error resume next 注意以下代码都不再添加 sub “代码名称” 和end sub请自己添加! 给当前单元格赋值: ActiveCell.Value = "你好!!!" 给特定单元格加入一段代码: 例如:在A1单元格中插入"HELLO" Range("a1").value="hello" 又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO"
1.sheets("sheet2").select range("a1").value="hello" 或2.Sheets("sheet1").Range("a1").Value = "hello" 说明: 1.sheet2被打开,然后在将“HELLO"放入到A1单元格中。 2.sheet2不被打开,将“HELLO"放入到A1单元格中。 隐藏工作表 '隐藏SHEET1这张工作表 sheets("sheet1").Visible=False '显示SHEET1这张工作表 sheets("sheet1").Visible=True 有时候我们想把所有的EXCEL中的SHEET都打印预览,请使用该段代码,它将在你现有的工作簿中循环,直到最后一个工作簿结束循环预览。 Dim my As Worksheet For Each my In Worksheets my.PrintPreview Next my 得到当前单元格的地址 msgbox ActiveCell.Address 得到当前日期及时间 msgbox date & chr(13) & time 保护工作簿 ActiveSheet.Protect 取消保护工作簿 ActiveSheet.Unprotect 给当前工作簿改名为 "liu" ActiveSheet.Name = "liu" 打开一个应用程序 AppActivate (Shell("C:\WINDOWS\CALC.EXE")) 增加一个工作簿 Worksheets.Add 删除当前工作簿 activesheet.delete 打开一个文件 Workbooks.Open FileName:="C:\My Documents\Book2.xls" 关闭当前工作簿 ActiveWindow.Close 当前单元格定为:左对齐 Selection.HorizontalAlignment = xlLeft 当前单元格定为:中心对齐 Selection.HorizontalAlignment = xlCenter 当前单元格定为:右对齐 Selection.HorizontalAlignment = xlRight 当前单元格为百分号风格
Selection.Style = "Percent" 当前单元格字体为粗体 Selection.Font.Bold = True 当前单元格字体为斜体 Selection.Font.Italic = True 当前单元格字体为宋体20号字 With Selection.Font .Name = "宋体" .Size = 20 End With With 语句 With 对象 .描述 End With 让你的机器发出响声 BEEP 清除单元格中所有文字、批注、格式、所有的东西! ActiveCell.Clear 测试选择状态的单元格的行数 MsgBox Selection.Rows.Count 测试选择状态的单元格的列数 MsgBox Selection.Columns.Count 测试选择状态的单元格的地址 Selection.Address 让所有的错误不再发生 ON ERROR RESUME NEXT 产生错误时让错误转到另一个地方 on error goto l 'code l: 'code 删除一个文件 kill "c:\1.txt" 定制自己的状态栏 Application.StatusBar = "现在时刻: " & Time 恢复自己的状态栏 Application.StatusBar = false 在运行期执行一个宏 Application.Run macro:="text" 滚动窗口到a1的位置 ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 定制系统日期 Dim MyDate, MyDay
MyDate = #12/12/69# MyDay = Day(MyDate) 今天的年限 Dim MyDate, MyYear MyDate = Date MyYear = Year(MyDate) MsgBox MyYear 产生一个inputbox<输入框> InputBox ("Enter number of months to add") 得到一个文件名: Dim kk As String kk = Application.GetOpenFilename("EXCEL (*.XLS), *.XLS", Title:="提示:请打开一个EXCEL文件:") msgbox kk 打开zoom显示比例对话框 Application.Dialogs(xlDialogZoom).Show 激活字体对话框 Application.Dialogs(xlDialogActiveCellFont).Show 打开另存对话框 Dim kk As String kk = Application.GetSaveAsFilename("excel (*.xls), *.xls") Workbooks.Open kk 此段代码寻找字符串中特定字符的位置,需要建立一个窗体,并在窗体中,放入TEXTBOX1,TEXTBOX2和TEXTBOX3(3个文本框)及COMMANDBUTTON1(按钮) Private Sub CommandButton1_Click() a = TextBox1.Text b = TextBox2.Text aa = Len(a) i = 1 Dim YY As String If b = "" Then Exit Sub Do If InStr(i, a, b, vbTextCompare) = 0 Then Exit Do kk = InStr(i, a, b, vbTextCompare) YY = YY & CStr(kk) & "/" i = kk + 1 Loop While aa >= i TextBox3.Text = YY End Sub ActiveX控件在Excel97中的运用 Excel97在工作表或图表上可使用ActiveX控件,根据我使用的体会,在工作上处理控件时,必须注意和了解如下事项: (一)用Excel5.0/95工作簿文件格式保存Excel97工作簿时,将选择ActiveX控件信息。当用户通过双击鼠标来编辑内嵌在其它应用程序文档中的Excel97工作簿时,该工作簿上的控件将不会正常工作。如果用户是通过用右键单击工作簿,然后选中快捷菜单上的“打开”
命令来编辑工作簿的话,工作簿上的控件就能正常工作了。 (二)当ActiveX控件处于激活状态时,将禁用某些MicrosoftExcelVisualBasic方法和属性。例如,当某一控件激活时,就不能使用Sort方法,故下述按钮单击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态)。 PrivateSubCommandButton1 Click Range(″a1:a10″) SortKey1:=Range(″a1″) EndSub 解决办法是通过选激活工作表上其它元素的方法来绕过这种问题。例如,可用下列代码对单元格区域排序: PrivateSubCommandButton1 Click Range(″a1″) Activate Range(″a1:a10″) SortKey1:=Range(″a1″) CommandButton1 Activate End Sub (三)在MicrosoftExcel中,用OLEObjects集合中的OLEObject对象代表ActiveX控件。如果要用编程的方式向工作表添加ActiveX控件,可用OLEObjects集合的Add方法。例如向第一张工作表添加命令按钮。 Worksheets(1) OLEObjects Add″Forms CommandButton 1″,_ Left:=10,Top:=10,Height:=20,Width:=100 因为ActiveX控件也可用OLEObjects集合中的OLEObject对象代表,所以也可用该集合中的对象来设置控件的属性。例如要设置控件“CommandBotton1”的“左边位置”属性。 Worksheets(1) OLEObjects(″CommandButton1″) Left=10 那些不属于OLEObject对象属性的控件属性,可通过由Object属性返回的实际控件对象来设置。例如要设置控件“CommandButton1”的标题。 Worksheets(1) OLEObjects(″CommandButton1″)  Object Caption=″runme″ 因为所有的OLE对象也是Shapes集合的成员,所以也可用该集合设置若干控件的属性。例如要对齐第一张工作表上所有控件的左边框。 ForEachsInWorksheets(1) Shapes Ifs Type=msoOLEControlObjectThens Left=10 Next 请注意,当在控件所在工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。在工作表上ActiveX控件的事件处理过程中,Me关键字所指向的是工作表,而非控件 65、在Excel中利用VBA创建多级选单 Excel是我们常用的报表处理软件之一,对于大多数人来说只是使用它进行打印报表,没有注意其他功能,其实利用Excel内嵌的 VBA 语言完全可以快速开发出自己企业的应用系统来,而且应用系统界面与其它专业编程语言相当相似。下面笔者简单通过一个实例说明如何利用VBA创建多级选单。 首先,我们对Excel中两个重要的内置函数auto_open() 和 auto_close()作一简单说明。 auto_open() :在打开工作簿时系统将自动执行该函数,因此我们可以在该函数中调用自己应用程序的选单函数以及其它需要初始化设置的函数及宏语句; auto_close():在关闭工作簿时系统将自动执行该函数。所以我们需要在该函数中放置删除用户自定义选单语句,否则只有退出Excel才能恢复EXCEL的系统选单。 在以下语句中,我们定义了选单设置函数 OpenMyMenu(),用于设置多级选单,其他有关说明见程序内注释,详细代码如下: Sub OpenMyMenu() ′自定义多级选单函数
On Error Resume Next ′忽略错误 MenuBars("MyMenu").Delete ′删除自定义选单 MenuBars.Add ("MyMenu") ′自定义选单项 Sheets("sheet1").Select MenuBars("MyMenu").Menus.Add Caption:="金融" ′增加第一个选单项“金融” ′以下三句为在“金融”选单下增加“银行法、货币政策和条例”三项选单项 MenuBars("MyMenu").Menus("金融").MenuItems.Add Caption:="银行法", OnAction:="银行法" MenuBars("MyMenu").Menus("金融").MenuItems.Add Caption:="货币政策", OnAction:="货币政策" MenuBars("MyMenu").Menus("金融").MenuItems.Add Caption:="条例", OnAction:="条例" ′以下为创建如图所示的多级选单 MenuBars("MyMenu").Menus.Add Caption:="经济" '建立选单项“经济” ′以下三句为在“经济”选单下增加“农业、工业和第三产业”三项选单项 MenuBars("MyMenu").Menus("经济").MenuItems.Add Caption:="农业", OnAction:="农业" MenuBars("MyMenu").Menus("经济").MenuItems.Add Caption:="工业", OnAction:="工业" MenuBars("MyMenu").Menus("经济").MenuItems.AddMenu Caption:="第三产业" ′以下三句为在“第三产业”选单下增加“概况、范畴”二项选单项和“饮食服务业”子选单 MenuBars("MyMenu").Menus("经济").MenuItems("第三产业").MenuItems.Add Caption:="概况", OnAction:="概况" MenuBars("MyMenu").Menus("经济").MenuItems("第三产业").MenuItems.Add Caption:="范畴", OnAction:="范畴" MenuBars("MyMenu").Menus("经济").MenuItems("第三产业").MenuItems.AddMenu Caption:="饮食服务业" ′以下二句为在“饮食服务业”选单下增加“酒店1、酒店2”二项选单项 MenuBars("MyMenu").Menus("经济").MenuItems("第三产业").MenuItems("饮食服务业").MenuItems.Add Caption:="酒店1", OnAction:="酒店1" MenuBars("MyMenu").Menus("经济").MenuItems("第三产业").MenuItems("饮食服务业").MenuItems.Add Caption:="酒店2", OnAction:="酒店2" MenuBars("MyMenu").Activate ′激活自定义选单 End Sub Sub auto_open() ′系统自动打开运行宏 OpenMyMenu ′调用用户选单函数 End Sub Sub auto_close() ′系统自动关闭运行宏 On Error Resume Next ′忽略错误 MenuBars("MyMenu").Delete ′删除自定义选单 End Sub 读者可以在自己的工作簿选单“工具”中的“宏”下,创建以上三个函数并将以上函数语句拷贝到其中即可运行。 66、.用VBA(编程)保护Excel文档 VBA(Visual Basic for Application)是Excel应用程序中功能非常强大的编程语言,为了规范不同的用户对Excel应用程序的访问能力,需要对Excel文档及有关的数据进行有效的保护, 这里根据自己及同行们的体会,从以下二个方面介绍用VBA编程法实现对Excel文档的保护。 对工作簿的保护
1.利用VBA中Workbook对象的SaveAs方法实现对工作簿的保护, 下面就对SaveAs有 关的参量作一介绍: Filename:该字符串表示要保存的文件名。 可包含完整路径。 如果不指定路径,Microsoft Excel 将文件保存到当前文件夹。 FileFormat: 可选,文件的保存格式。 Password :为一个区分大小写的字符串(不超过15个字符) ,用于指定文件的保护密码。 WriteResPassword: 该字符串表示文件的写保护密码。 如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读模式打开。 ReadOnlyRecommended :如果为True则在打开文件时显示一条信息,提示该文件以只读模式打开。 下例就是在Excel应用程序中添加一工作簿,将工作簿按常规文件格式存为“C:\pj\obj\经济评价.xls”文件,并给该文件指定保护密码“12”以及写保护密码“23”。 Sub 保护工作簿() NewWorkbook = Workbooks.add NewWorkbook.SaveAs FileName: ="C: \pj\obj\经济评价.xls", FileFormat: = XlNormal,Password:="12",WriteResPassword:=″23″ End sub 2.利用VBA中Workbook对象的Protect方法对工作簿的结构和窗口进行保护,Workbook对象的Protect方法带有以下三个参量: Password: 为加在工作表或工作簿上区分大小写的密码字符串。 如果省略本参数,不用密码就可以取消对该工作簿的保护。否则,取消对该工作表或工作簿的保护时必须提供该密码。如果忘记了密码,就无法取消对该工作表或工作簿的保护。最好在安全的 地方保存一份密码及其对应文档名的列表。 Structure: 若为True则保护工作簿结构(工作簿中工作表的相对位置)。默认值为False。 Windows 若为True则保护工作簿窗口。 下例就是对一名为“经济评价.xls”的工作簿实现“结构”和“窗口”保护: Sub 保护工作簿() Workbooks (″经济评价″) .Protect Password: ="1234", Structure: =True, Windows:=True End sub Workbook对象的Unprotect方法用于取消对工作簿的保护。Unprotect方法只有一个参量,就是保护工作表时所用的口令。 3.对工作簿进行隐藏保护,可使他人无法看到其对应的窗口。操作方法如下: 在VBA中使用Workbook对象下面的Windows对象的Visible属性对工作簿进行隐藏和取消隐藏,Visible属性的值可取“True”和“False”两种。 下面程序代码完成对工作簿“book.xls”的隐藏: Sub 隐藏工作簿() Workbooks("book").Activate ActiveWindow.Visible = False End sub 或: Sub 隐藏工作簿() Workbooks("book").Windows(1).Visible=False End sub 对工作表的保护 1.对工作表实现口令保护利用VBA调用Worksheet对象的Protect方法对工作表进行保护,Protect带有以下参量:
Password 用于保护工作表的口令。 Drawingobjects 若为True,则对工作表中的Drawingobjects对象进行保护,缺省值为True。 Contents 若为True,则对单元格内容进行保护,缺省值为True。 下面程序代码完成对工作表“基础数据表”的保护: Sub 保护工作表() Worksheets(″基础数据表″).Protect Password:="1234" End sub 2.对工作表实现隐藏保护,使他人无法看到工作表: 利用VBA设置Worksheet对象的Visible属性来隐藏工作表;Visible属性的值为以下三个值中的一个: True 工作表为显示状态。 False 工作表为隐藏状态。 XlVerHidden 工作表为隐藏状态,且用户不能通过“取消隐藏”对话框将其改为显示状态。当Visible的值为XlVerHidden时,只能利用VBA将其重新设置为True。 Sub 隐藏工作表() Worksheets("基础数据表").Visible=False End sub 67、求:将所选区域中的数值全部转化为"万元"的最简代码. 求:将所选区域中的数值全部转化为"万元"的最简代码. 或能完成此功能的最便捷的命令操作. 写了一个,抛砖引玉: Sub convt() Dim cel As Range Dim dec As Variant Application.EnableEvents = False yesorno = MsgBox("确实将区域所有数值转换为“万元”?", vbYesNo + vbQuestion + vbDefaultButton1) If yesorno = vbYes Then 1: dec = Application.InputBox("请输入小数位数:", Default:=0, Type:=1) If dec = "" Then GoTo 1 End If For Each cel In Selection If IsNumeric(cel.Value) Then 'cel = (Round(cel.Value / 10000, 2)) & "万元" cel = (Round(cel.Value / 10000, dec)) End If Next ElseIf yesorno = vbNo Then Exit Sub End If End Sub 以下当为最简代码吧. Sub Macro2() Selection.NumberFormatLocal = "#"".""#,"
End Sub 68、在VBA开发环境中,点击工具――附加控件,出现如下窗口: 在可选控件中选择microsoft orogressbar control,再点击确定,这时,你会发现在你的工具箱中增加了进度条工具,如图: 下面说说进度条的用法: 属性:Max: 设置进度条控件的最大值 Min: 设置进度条控件的最小值 Value:设置进度条控件对象的当前值 Scrolling: 进度条的式样,即一格一格的进度条或是没有间隔的进度条。 例子:Private Sub UserForm_Activate() For i = 1 to 5000 ProgressBar1.Max = 5000 ‘设置进度条控件的最大值 ProgressBar1.Value = I ‘进度条控件对象的当前值 next End Sub 在程序中加入进度条的办法是将ProgressBar1.Max=最大值,ProgressBar1.Value = 当前值放入循环中去。 69、Excel是一个优秀的电子表格软件,如果你编的程序需要以报表的形式显示最终结果,它会是个不错的选择。你可以通过VB控制Excel显示数据表格。如果你不愿意深入了解Excel这些琐碎的细节,也不是没有权宜之计:你可以打开Excel中的工具→宏→录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。这样得到的程序一般都能正常运行,但其中的宏代码往往不够简洁,效率和可读性都不高。 Excel编程碰到的第一个问题是表头。有时表头的形式比较复杂,需要横向或纵向合并单元格。请放心,只要没有斜杠,Excel都能应付得了。 例如合并A2~A5这4个单元格,你录制的宏代码会是这样: Range("A2:A5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With Selection.Merge 而自己编程只要一句 Range.(“A2:A5”).mergecells=True 就可以解决问题。 表头形式定了,再就是表头的内容。如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会“越境”进入右边那个空白单元格,很不美观。这个问题可以通过在程序中设置列宽加以解决。 Columns(14).columnwidth=12 ‘设置第14列列宽为12(缺省列宽为8.38) 如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行 Columns(“a:i”).autofit ‘a到i列自动调整列宽
让Excel随机应变吧。 但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。要是能保持默认列宽,让文本自动换行就好了。没问题,Excel包你满意。 Rows(3).WrapText=True ‘让第三行各单元格中的文本自动换行 不过你最好再加一句 Rows(3) .VerticalAlignment = xlTop 让表头自动向上对齐,这样比较符合习惯。 你还可以给表头打上底色,让你的读者不至于看了打哈欠。 Rows(2). Interior .ColorIndex = 5 设置第2行底色为蓝色 再给表格的标题上色,这样更醒目一点。 Rows(1).Font.ColorIndex=4 表头完成后该填数据了,一个一个地填实在是太? ,如果你的数据是存放在一个二维数组中,那问题就简单多了。 Dim Data(3,4) ………… ‘数据处理 Range(“a2:d4”).Value=Data 这样可以一次填入一个表的所有数据,够快了吧!不过提醒一句,Range对象大小最好与数组匹配,小了无法显示所有数据,大了则会在空白单元格只填入“N/A”表示没有取得数据。 如果需要在结果中显示多个同样规格的数据表,想在Range对象中加入循环变量,这也好办。 Dim cell11,cell2 Dim Data(3,4) ………… For I =1 to 40 ………… ‘数据处理 Set cell1=Worksheets("Sheet1").Cells(5*I-4,1) Set cell2=Worksheets("Sheet1").Cells(5*I-2,4) Worksheets("Sheet1").Range(cell1,cell2).value=Data Next I 表格填完了,现在该打表格线了,以下几条语句可以满足你的要求: With Worksheets("Sheet1").Range(cell1,cell2).borders .LineStyle=xlContinuous .weight=xlThin End With 70、《计算机实用软件》2001-2002第一学期试卷(2) 一、填空题(每空1分,共20分) 1.在Excel的系统默认状态下,某个工作表的标签呈白色显示,表示其为 。在工作表中被粗线框住的的格子称为 。 2.在Excel工作表中可以输入两类数据它们是 和 3. 工作表由 行和 列组成 4.输入Excel公式应以 或者 开头,然后再输入具体的计算公式 5.在Excel中,系统默认状态下,输入文字的对齐方式是 ,输入数字的对齐方式是 6.在VB5的标准控件中 控件适用于在一组按钮中显示多个选项,但用户只能而且必须选择其中一项。 控件适用于放置用户只能看到但不能修改的少量文本。 7.在VB中,要改变Text1文本框内显示的信息时,应当在其 窗口中,
将 属性进行重新设置。 8.VB5表达(40 Mod 7)\2的值是 2x2的VB5表达式为 9.如下程序实现在当前窗口中显示一个消息框,消息框中显示有“是(Y)”和“否(N)”两个按钮,试将该程序填写完整,使用户点击“是(Y)”按钮后能显示出数字1,点击“否(N)”按钮后能显示出数字2 Private Sub Form_Click() Msg=’你想要继续吗?” Style=vbYesNo Response=msgbox(msg , ) If Response vbYes Print“1” Else End if End Sub 二、单选题(每题3分,共30分) 1. Excel主要用于( )领域。 . A. 美术设计、装璜 B. 数据分析、财务管理 C工业设计、机械制造 D.多媒体制作 2. 对话框窗口中的“确定”按钮的作用是( ) A. 确定输入的信息 B. 确定各选项并开始执行 C. 关闭对话框不做任何事 D.退出对话框 3. 在个人计算机上,通常Excel是在( )系统环境下运行的。 A.office97 B.MS-DOS C.Windows D.UNIX 4、Sheet1是Excel中的一个默认( ) A.工作薄 B.单元格 C.工作表 D.页 5、在Excel中,如果输入分数,则需在数值闪加上() A. 0与空格 B. 空格与0 C. 空格 D. 0 6、在Excel中,公式“SUM+($D2:$C$7)”中的$C$7属于()引用。 A. 绝对 B. 相对 C. 列相对行绝对的混合 D. 行相对列绝对的混合 7、在Excel工作表中,系统默认状态下,日期和时间数据会自动()对齐。 A. 靠左 B. 靠右 C. 居中 D. 靠上 8、下述( )不是数据清单应具有的特征。 A. 一个数据清单独占一个工作表 B. 数据清单中避免对单元格进行格式化 C. 其它信息不要放在数据清单的区域内 D. 数据清单中避免出现空行或空列 9、下列VB5控件中( )可以自动设置滚动条。 A. 文本框 B. 图片框 C. 框架 D. 复选框 10、若想在窗体显示一句提示信息,下列()控件最适宜实现 A. 框架 B. 标签 C. 单选钮 D. 列表框 11、下述哪个是VB5合法变量名?( ) A. Then B. If C. %h121 D. Then_1 12、若想要建立一个学生管理的输入界面,其中要很要求选择学生的性别和选择选修课情况(共有5门课,供任选),应如何在窗体利用单选按钮和复选框来实现 A. 将5门课程用一组5个复选框来表示,将性别用一组两个复选框来表示 B. 将5门课程用一组5个单选框来表示,将性别用一组两个复选框来表示 C. 将5门课程用一组5个复选框来表示,将性别用一组两个单选框来表示
D. 将5门课程用一组5个单选框来表示,将性别用一组两个单选框来表示 13、假设在当前VB5窗体有一个个文本框Test3,并有Text3_keyPress过程如下(其中变量S1的初始值为0) Private Sub Text3_keyPress (keyAscii As Integer) Static S1 If keyAscii=13 Then ‘13是回车符的ASCII码) S1=S1+1 Form1.Print S1 If Text3.Text=”11” Then MsgBox “It is OK!” Text3.Enabled+False End Else If S1=3 Then MsgBox “Sorry,invalid password!” End Else MsgBox “Key in password again!” Text3.text=”” End If End If End If End Sub 当程序运行时用户要在文本框中输入11,回车后窗体和屏幕上各会显示:() A. 窗体显示“1”,屏幕上弹出一个消息框,框内显示出“Sorry,invalid password!” B. 窗体显示“1”,屏幕上弹出一个消息框,框内显示出“Key in password again!” C. 窗体显示“1”,屏幕上弹出一个消息框,框内显示出“It is OK!” D. 窗体显示“3”,屏幕上弹出一个消息框,框内显示出“Sorry,invalid password!” 三、判断题(每题2分,共30分) 1、剪贴板中只能保存最后一次剪切或复制的内容。( ) 2、要关闭Excel的文档窗口,可以用Alt+F4快捷键。( ) 3、Excel97启动后自动打开一个名book1的工作表。( ) 4、在Excel中, 一个工作表可以包含多个工作薄。( ) 5、在Excel97中,如果在某个单元格输入的公式中使用的是绝对地址,则复制该单元公式到另一单元时,Excel会对后一单元的公式作相应的调整。( ) 6、在Excel中进行数据分类汇总,既可以通过执行“数据”菜单中的“分类汇总”命令执行,也可以使用Excel提供的数据透视表功能实现。前者适合依据多个字段进行分类汇总,后者适合依据一个字段进行分类汇总。( ) 7、在Excel中,当工作表的数据发生变化时,相应图表中的数据序列也会随之变化,反之亦然( ) 8、使用Excel默认的填充序列功能,可以自动填充出“第一课。。。。第十课”的序列。( ) 9、在VB5的标准控件中复选框控件适用于在一组按钮中显示多个选项,但用户只能而且必须选择其中一项。( ) 10、在VB中,可能有许多事件过程不会被执行。这是因为事件过程对应的事件没有发生。( ) 11、在VB中,变体型变量是一种没有数据类型的变量。( )
12、在VB中,Integer类型的类型声明符为“!”。 ( ) 13、在VB中,局部变量只在定义它的过程内有效。( ) 14、在VB5的过程中用Dim声明局部变量是动态变量,其值在过程执行完后仍保留。用Static声明局部变量是静态变量,其值在程序执行完后会消失。( ) 15、在VB中,属性窗体和窗体属性中一回事。( ) 四、多选题(提示:在下述题前有*标记的题选择是有次序的,每小题2分,共20分) 1、“关闭计算机的正确步骤为”( ) A. 选择“关闭系统项” B. 在弹出的对话框选择“关闭计算机”并单击“确定”按钮 C. 单击“开始”菜单 D. 关闭所有已打开的窗口 2、下述输入数据中哪些是正确的Excel97的-6左2分之一? ( ) A. –61/2 B. (61/2) C. –6 1/2 D. (6 1/2) 3、在Excel97当前工作表中,假设C5到F5单元格中已有数据型数据,求出C5到F5的总值的公式可以是( ) A. Sum(c5,f5) B. =Sum(c5:f5) C. =c5+d5+e5+f5 D. +Sum(c5:f5) 4、下列( )是Excel97的应用范围。 A. 制作普通表格 B. 关联数据以及图表应用 C. 数据模拟运算 D. 数据库的基本操作 5、如果要使A1成为活动单元格,可以( )。 A. 单击A1单元格 B. 按Home键 C. 按Ctrl+Home键 D. 在编辑栏的“名称”框内输入A1然后回车 6、下述哪些数据不是Excel97中的合法的日期格式的数据。( ) A. 1989年12月31号 B. 2001/1/11 C. 04-11-89 D. 1989.12.31 7、下述哪些是VB中合法的注释语句?( ) A. “这是一个注释” B. ‘这是一个注释 C. Rem 这是一个注释 D. 这是一个注释 8、*在VB中将窗体的标题设置成“评估展示”的步骤为( ); A. 将Caption的值改为“评估展示” B. 将当前窗体存盘 C. 将当前窗体成为焦点 D. 打开属性窗口 9、*向窗体添加控件的步骤为( ); A. 单击工具箱中所需的控件 B. 移动鼠标到窗体中适当位置 C. 按下鼠标向另一对角拖曳直到满意释放鼠标 D. 使窗体成为焦点
71、1.文件菜单栏(Excel自带的) 文件就叫Commandbars("File"),你可以在打开命令后加个菜单,类似的,编辑就是Commandbars("Edit"),视图就是Commandbars("View"),这些不会因语言版本不一样而不同,全部是一样的。 2.快捷菜单栏 好像那些打印啊、打开文件啊、居中对齐啊那些呢,叫Commandbars("Standard"),那些字体大小啊,颜色啊,就叫("Formatting")。 3.右键 Excel的右键也是可以更改的,名叫:Commandbars("Cell") 4.自定义菜单 类似于数据透视表的那些浮动的窗体,不用名字,用Commandbars.add就可以追加了,最简单了。如果不能运行,记得加个Application.在Commandbars的前面。 72、由于公司合同较多,每次缴印花税时,计算每份印花税所需要的各面额印花的张数是一件比较繁琐的事。如:这份合同需要缴纳23元的印花税则需要买两张10元、一张2元、一张1元面额的印花。幸好有
Excel这个财会人员的得力工具,我编写了一段宏代码来自动帮我计算各面额印花的张数,既快捷又方便。想到还有很多同行要做这项工作,所以写下来与大家共享。具体操作如下: 新建一个Excel文件存为stampduty.xls,进入宏编辑器(Alt+F11)在ThisWorkbook中加入以下代码: '印花税各面额印花张数计算程序 BY-RAY DENG '用途:已知印花税额,计算各面额印花张数 '使用方法:做好工具条后,只要选择要计算的原始数据,点击"印花税面额计算"工具条即可. ' (请不要选择全列,否则无效的计算太多.) Sub stamp_duty() Static flagcal As Integer '计算标志,首次计算时清空计算结果页,否则在结果页追加计算结果 Static rowbegain As Integer '计算结果页上可用行号,计算结果追加时从这里开始 Dim filename As String '打开的需要计算数据的文件名 Dim moneytype(7) As Single '定义面额 Dim money As Single Dim billno As Integer '票额张数 filename = ActiveWorkbook.Name '记录当前打开的文件名 If filename = VBAProject.ThisWorkbook.Name Then '不要在自身这个文件中操作 MsgBox "请选择其它文件中的数据!", vbInformation + vbOKOnly Exit Sub End If Application.ScreenUpdating = False '将屏幕更新关闭,可加快宏的运行速度 billno = 0 '计数清0 moneytype(0) = 100 '印花税面额为0.5-100,以0.5为舍入标准 moneytype(1) = 50 moneytype(2) = 10 moneytype(3) = 5 moneytype(4) = 2 moneytype(5) = 1 moneytype(6) = 0.5 VBAProject.ThisWorkbook.Sheets(1).Activate '打开结果页 If flagcal = 0 Then '如果为第一次计算,则清空结果页 Cells.Select Selection.ClearContents Range("A1").Select End If ActiveSheet.Cells(1, 1) = "Origin DATA" '先写上表头 For i = 0 To 6 ActiveSheet.Cells(1, i + 2) = moneytype(i) Next i Workbooks(filename).Activate '转到要计算的原始数据数据文件 rowno = ActiveWindow.RangeSelection.Rows.Count '所选区域有几行 rowstart = ActiveWindow.RangeSelection.Row '起始行 colstart = ActiveWindow.RangeSelection.Column '起始列 j = rowbegain '结果页中写结果的起始行 For i = 1 To rowno '开始读原始数据
origindata = Cells(i + rowstart - 1, colstart) '读原始数据 '广州印花税尾数处理方法:过0.5进1,不足舍去,刚好为0.5及其倍数则不变 If origindata * 100 Mod 50 <> 0 Then money = Round(origindata, 0) '以0.5为界限作四舍五入 Else money = origindata '整数及尾数刚好为0.5不作处理 End If VBAProject.ThisWorkbook.Sheets(1).Activate '转到结果页 ActiveSheet.Cells(i + 1 + j, 1) = origindata '在第一列写入原始数据 Workbooks(filename).Activate ''转到要计算的原始数据数据文件 For k = 0 To 6 '循环计算各面额所需张数 While money >= moneytype(k) money = money - moneytype(k) billno = billno + 1 Wend VBAProject.ThisWorkbook.Sheets(1).Activate ActiveSheet.Cells(i + 1 + j, k + 2) = billno '在相应位置写入该面额张数 billno = 0 '清0准备计算下一面额 Workbooks(filename).Activate Next k rowbegain = rowbegain + 1 '结果页中写结果的起始行下移一行 Next i flagcal = flagcal + 1 '计算次数累加 rowbegain = rowbegain + 1 '添加一空行区分不同次数的结果 Application.ScreenUpdating = True '恢复屏幕刷新 VBAProject.ThisWorkbook.Sheets(1).Activate '打开结果页 End Sub 编好后存盘,退出宏编辑器。开始构建一个工具栏:[工具]—[自定义],点击[工具栏]---[新建],工具栏名称定为“印花税”,这时会出现 ,点击[命令],将 “命令”列表中任意图标拖动到这个工具栏中,在刚拖过来的图标上点右键,选择[命名],将其改为“印花税面额计算”,选择[总是只用文字],这时会出现 ,在“印花税面额计算”上点一次右键,选择[指定宏],选择“ThisWorkbook.stamp_duty” ,点[确定]即可。以后要计算时,只要选好原始数据,点击该工具栏即可。 73、Sub AA() Sheet1.Visible = 2 ‘深度隐藏 Sheet1.Visible = -1 ’显示 End Sub 74、你在“workbook"的 Private Sub Workbook_BeforeClose(Cancel As Boolean) 中加入如下句子:myNowTime = Format(Now, "yymmdd" & "-" & "hhmmss") ActiveWorkbook.SaveAs Filename:=currPath & myNowTime & ".xls", AddToMru:=False ‘(”currPath“ 为你的路径及文件名称) 这样你保存文件可以年、月、日来实现。甚至可以小时、分、秒来保存。对于在编程序的来讲比较有用。如果你不需要“小时、分及秒”,可把后面的 [& "-" & "hhmmss")]取消即可。 75、我们日常上送、下发的报表材料、通知等都要加盖公章,如果把这项工作交给Excel或Word来完成,我们的工作就轻松多了。
第一步:制作公章图案 首先我们要做出一个公章的图案,最简单的办法是把公章图案扫描到电脑中,然后处理成透明的GIF图像。我们也可以直接用Excel来制作:把绘图工具打开,选中“椭圆”工具,在按下“Shift”键的同时拖开鼠标,就可以得到一个正圆了。双击这个正圆打开“设置自选图形格式”对话框,在“颜色与线条”标签中,填充颜色选“无填充颜色”,线条颜色设为红色,选3磅粗的单线形(图)。公章的文字用艺术字来制作,填充颜色和线条颜色都用红色,并设成无阴影产。弧形文字和水平文字要分开来做,在做弧形文字时,把艺术字拖到圆形的上方,在艺术字工具中选“艺术字形状-细上弯弧”,按住黄色的四方块往下拉,再作适当的调整,就可以做出公章里的圆弧形的文字了。公章中间还有一个红五星,用“自选图形”的星形就可以做出来了,填充颜色和线条颜色用红色。最后,按住“Shift”键把组成公章的文字、图形全部选上,执行右键菜单中的“组合”命令,一个公章就做好了。 如何把做好的公章保存出来?这里有一方法:把工作表另存为Web页,然后到保存目录中找到*.files的文件夹,里面有一个GIF图片,这就是刚才做好的公章图案了,它的背景是透明的,我们把它改名为gongzhang.gif保存下来即可。 第二步:添加“盖章”按钮 接下来我们给Excel添加一个盖章按钮,当一个工作表做好后,点击这个盖章按钮,就可以为我们盖上公章了。 先把公章图形复制出来(用来粘贴作为按钮的图标),然后打开“工具-自定义”对话框,选中“命令”标签,在“类别”栏中找到“宏”,在右边的“命令”栏里就会出现一项“自定义按钮”。用鼠标把这个笑脸图标拖出到菜单栏或工具栏上放下,在笑脸图标上击右键,在弹出的菜单中把“命名”处的文字改为“加盖公章”。接下来点击“粘贴按钮图标”这个命令,就可以用刚和复制的公章图形来代替笑脸图标了。把鼠标移下来选中“分配超级链接-插入图片”,然后在“请键入文件名称或Web页名称”栏里输入公章图片gongzhang.gif的文件名及路径,然后按“确定”返回。 好了,看到“加盖公章”这个按钮了吧,点击一下看看,呵呵,页面上就盖上一个鲜红的公章了,用鼠标可以把它拖到任意的地方。在Word文档中加盖公章的方法与此大同小异,大家可以自己试一试。 76、如何使某一个固定的菜单项无效 Application.CommandBars("File").Controls(6).Enabled = False Controls(6)中的6就是所在菜单栏的行数 我觉得这样可能更可靠: Dim i As Integer For i = 1 To Application.CommandBars("File").Controls.Count If Application.CommandBars("File").Controls(i).Caption = "另存为(&A)..." Then Application.CommandBars("File").Controls(i).Enabled = False End If Next i 77、请教大家,我想在EXCEL文件退出时,另存为当前目录下的子目录BAK中,比如EXCEL文件在C盘,就另存为C:\BAK子目录下,但EXCEL文件的位置不确定,不知如何写语句? 注意先引用"Microsoft Scripting Runtime" Private Sub Workbook_BeforeClose(Cancel As Boolean) ' 在本文件要關閉前,執行備份動作。 If Not ActiveWorkbook.Saved Then Exit Sub ' 若原文件未存檔,備份檔也不存。 ThisPath = ThisWorkbook.Path ' 假定備份文件夾之名稱為"BAK",若本文件是備份檔,則不需再備份。 If Len(Application.WorksheetFunction.Substitute(ThisPath, "BAK", "")) < Len(ThisPath) Then Exit Sub
Bak = ThisPath & "\" & "BAK" '檢查備份文件夾是否存在,若不存在,就建立一個。 If Len(Dir(Bak, vbDirectory)) > 0 Then If (GetAttr(Bak) And vbDirectory) = vbDirectory Then GoTo 3 ' 若已存在,跳到下一步。 End If MkDir Bak ' 建立備份文件夾。 ' 改變目前路徑到備份文件夾路徑,並備份之。 3 ChDir Bak Application.EnableEvents = False ' 避免執行BeforeSave事件。 Application.DisplayAlerts = False ' 避免顯示是否要覆蓋原備份文件之訊息。 ActiveWorkbook.SaveAs ChDir ThisPath ' 改變目前路徑回到原文件夾路徑。 Application.DisplayAlerts = True Application.EnableEvents = True End Sub 上述程式有個漏洞,就是在本文件做過更動,且存檔過了,但最後一次的更動未存檔,則 If Not ActiveWorkbook.Saved Then Exit Sub 這個判斷會造成不存備份檔之錯誤決定。 若想彌補上述錯誤,將觸發的事件改成Workbook_BeforeSave,卻會造成Excel關閉的錯誤。 78、文件保存为以某一单元格中的值为文件名的宏怎么写 用命令: ActiveWorkbook.SaveCopyAs Str(Range("Sheet1!A1")) + ".xls" 79、Offset 属性 参阅应用于示例特性应用于 Range 对象的 Offset 属性。 返回一个 Range 对象,该对象代表某个指定区域以外的区域。只读。 expression.Offset(RowOffset, ColumnOffset) expression 必需。该表达式返回一个 Range 对象。 RowOffset Variant 类型,可选。区域偏移的行数(正值、负值或 0(零))。正值表示向下偏移,负值表示向上偏移,默认值为 0。 ColumnOffset Variant 类型,可选。区域偏移的列数(正值、负值或 0(零))。正值表示向右偏移,负值表示向左偏移,默认值为 0。 应用于 TickLabels 对象的 Offset 属性。 返回或设置各级别标签之间的距离以及第一级标签与坐标轴之间的距离。其默认距离为百分之百,代表坐标轴标签与坐标轴之间的默认距离。其值可以为从 0 到 1000 之间的一个整数百分比,表示相对于坐标轴标签的字体大小。Long 类型,可读写。 expression.Offset expression 必需。该表达式返回一个 TickLabels 对象。 示例 应用于 Range 对象。 本示例激活 Sheet1 上活动单元格向右偏移三列、向下偏移三行处的单元格。 Worksheets("Sheet1").Activate ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate 本示例假定 Sheet1 中包含一个具有标题行的表格。本示例先选定该表格,但并不选择标题行。运行本示例之前,活动单元格必须位于表格中。 Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _ tbl.Columns.Count).Select 应用于 TickLabels 对象。 如果偏移量小于 500,则本示例将 Chart1 中数值轴上标签之间的距离设置为当前距离的两倍。 With Charts("Chart1").Axes(xlValue).TickLabels If .Offset < 500 then .Offset = .Offset * 2 End If End With 80、新建工作簿 参阅特性若要在 Visual Basic 中创建新的工作簿,请使用 Add 方法。下述过程创建了新的工作簿。Microsoft Excel 自动将该工作簿命名为“BookN”,其中“N”是下一个可用的数字。新工作簿将成为活动工作簿。 Sub AddOne() Workbooks.Add End Sub 创建新工作簿更好的方法是将其分配给一个对象变量。下例中,由 Add 方法返回的 Workbook 对象分配给了对象变量 newBook。然后,又设置了 newBook 的若干属性。使用对象变量可以很容易地控制新工作簿。 Sub AddNew() Set NewBook = Workbooks.Add With NewBook .Title = "All Sales" .Subject = "Sales" .SaveAs Filename:="Allsales.xls" End With End Sub
81、Rem:将活动单元格从A5移到A6,并将A6单元格的数值保存到x变量中 range("A5 ").select此命令就是选择A5单元格 Activecell.offset(1,0).select X=activecell.value 82、用代码窗口中可用F8运行宏,Alt+F8显示宏对话框,Alt+F11可以打开VBE编辑器 83、Option Explicit 在程序代码前使用该命令,则变量要在声明后才能使用,否则编译程序无法识别该变量,从而产生错误信息 84、Load语句用于加载窗体,加载后将占用内存,Hide方法使窗体隐藏,但仍在内存中,故不再使用窗体时应使用Uuload语句及时卸载,将内存交还系统,Show方法用来显示一个窗体,格式: 窗体名称.show 模式,模式可取0或1,为1时,不能到其他窗体操作,只有关闭该窗体后才能对其他窗体操作 85、控件的命名规则,通常使用3个字母的前缀命名控件,如Label的前缀为lbl,初学者最好养成良好的命名习惯 86、按下Ctrl+Enter键单元格不移动。 87、按下F2键直接在单元格内编辑,不需动鼠标 88、命令按钮不支持双击(Dbclick)事件 89、Private Sub CheckBox1_Click() If CheckBox1.Value Then
MsgBox "333" Else MsgBox "666" End If End Sub 本段的主要用意在于明白了If CheckBox1.Value Then与If CheckBox1.Value=True Then 90、Timer是计时器,功能是按指定时间间隔产生定时事件 91、在一个语句要分行显示的地方加一个或多个空格,加一个下划线_然后回车转入下一物理行,作用在于代码一行写不下时续行,程序代码中一行较短时可加:把多行连成一行显示 92、if a>15 then b=10 else b=100 end if 可改为如下if语句 b=iif(a.15,10,100) 93、F12用于启动另存为对话框 94、x=shell(calc.exe,1)可打开计算器程序 95、call语句格式:Call<子过程名>[(<实际参数表>)]如果过程本身没有参数,则实参和括号可省略,并报参数放在括号中,另一个调用Sub过程的方法是: <子过程名>[<实际参数表>]比前一个少了Call和括号,子过程调用语句的实参在数目、类型、排列上与子过程定义语句的形式参数表一致 96、自定义函数一例,求abc三个数的平均 Private Function Passed(By Val a As integer, By Val b As integer, By Val c As integer) ave=(a+b+c)/3 End Sub 在定义时必须向函数过程名赋值,而子程序名不能赋值 97、在工作表任意单元格输入=Cell("filename")可获得文件的完整路径、文件名和工作表名 98、在打开Excel文件时按住Shift键,将不运行VBA过程,可防止宏病毒,单击文件 关闭命令,在点关闭时按住Shift键将在不运行VBA过程的情况下关闭工作簿,可防止关闭时自动运行的宏病毒。 99、让一个变量得到单元格A1到A5的总和(变量设为X), X=Sum(Range(“A1:A5”)) 错 X=Application.WorksheetFunction.Sum(Range(“A1:A5”))正确 也就是说必须通过Application的WorksheetFunction属性间接调用工作表函数 100、Rem和'是注释符,注释语句是非执行语句,要养成对代码注释的习惯。
101、ActiveSheet.Next.Select选择活动工作表下一张工作表, ActiveSheet.Previous.Select选上一张 102、单元格B2:B10数值不全为空用IF语句表达 For Each cl in ActiveSheet.Range("B2:B10") If cl.Value <> "" then msgbox "有非空单元格" Exit For endif next 103、用Range引用单元格和单元格区域
Range("A1") 单元格A1 Range("A1:B5") 从单元格A1到B5区域 Range("A1:B5 ,B1:B7") 多块的选定区域 Range("A:A") A列 Range("1:1") 第一行 Range("A:C") A列到C列的区域 Range("1:5") 第1行到第5行的区域 Range("1:1,3:3") 第1、行 Range("A:A,C:C") A列、C列 104、用Cells及编号引用单元格 Cells(6,1)A6单元格 如果对工作表用Cells属性时不指定索引,表示引用工作表上的所有单元格,下例清除活动工作簿中工作表Sheet1上所有单元格的内容 Worksheets(“sheet1”).Cells.ClearContents 105、可用变量代入单元格索引值,故Cells属性非常适用于在单元格区域中循环,如: For counter=1 To 20 Worksheets(“sheet1”).Cells(counter,3).value=counter Next counter 106、引用行或列 Rows(1) 第1行 Rows 所有行 Columns(1) 第1列 Columns(“C”) 第3列 Columns 工作表上所有列 106、可用方括号将A1样式的引用或命名区域的名称括起来,作为Range属性的快捷方式,这样就不必键入Range 和引号,如 Worksheets(“sheet1”).[A1:B2].clearContents [MyRange].Value=30 107、用Offset处理按相对于其他单元格的某一位置的常用办法是使用Offset属性,本例将活动工作表上活动单元格下一行和右边三列的单元格的内容设置为下划线,如: ActiveCell.Offset(1,3).font.Underline=XlDouble 108、把别的工作表Sheet2数据,读到当前工作表的方法列举 1)[A1]=Sheet2.[A1] 把Sheet2A1单元格的数据,读到A1单元格 2)[A2:A4]=Sheet2.[B1] 把Sheet2单元格B1的数据读到A2:到A4单元格 3)Range(B1”)=Sheet2.Range(“B1”) 把Sheet2工作表单元格B1数据,读到B1单元格 4)Range(“C1:C3”)=Sheet2.Range(“C1”) 把Sheet2工作表单元格C1数据,读到C1:C3 5)Cells(1,4)=Sheet2Cells(1,4) 把Sheet2工作表单元格D1数据,读到D1 单元格 6)Range(Cells(1,5),Cells(5,5)=Sheet2.Cells(1,5) 把sheet2工作表单元格E1数据,读到E1:E5单元格 7)Selection.Value=Sheet2.[F1] 把Sheet2 工作表单元格[F1]数据,读到任何你点选的单元格 109、Sub前有个Private表示是私有子程序,这个子程序不会出现在“宏”对话框中 110、Sub test() ActiveSheet.Calculate End Sub重算活动工作表
111、编程前应该尽可能地多了解Excel对象的属性、方法 112、每一个Excel对象的属性、方法的调用都要通过OLE连接的一个或多个调用,这些OLE调用都是需要时间的,减少使用对象引用能加快VBA代码的运行 113、使用With语句 Workbooks(1).Sheets(1).Range(“A1:A1000”).font.Name=”Pay” Workbooks(1).Sheets(1).Range(“A1:A1000”).Font.Fontstyle=”Bold”… 改用With语句则运行速度加快 例:With Workbooks(1).Sheets(1).Range(“A1:A1000”).font .Name=”Pay” .Fontstyle= Bold” … End With 114、用set设置对象变量,以减少对象的访问,如: Set MyRange=Workbooks(1).Sheets(1) Mysheet.Range(“A1”).Value=100 Mysheet.Range(“A2”).Value=200 比直接用Workbooks(1).Sheets(1). Range(“A1”).Value=100 Workbooks(1).Sheets(1). Range(“A2”).Value=200运行快 115、在循环中要尽是减少对象的访问 For k=1 To 100 Sheets(“sheet1”).select Cells(k,1).value=Cells(1,1).Value Next k 更快的代码是 set TheValue=Cells(1,1).Value Sheets(“sheet1”).select For k=1 To 100 Cells(k,1).value=TheValue 116、减少对象的激活和选择 如果你是通过录制宏的来学习VBA的程序里一定充满了对象的激活和选择,如Workbooks(XXX).active 、Sheets(XXX).Select 、Range(XXX).Select等,但事实上大多数情况下这些操作不是必须的,如 Sheets(“sheet1”).Select Range(“A1”).Value=100 Range(“A2”).Value=200 可改为With sheets(“Sheet3”) .Range (“A1”)=100 .Range (“A2”)=200 117、关闭屏幕更新是提高运行速度的最有效的办法,推荐使用 Application.ScreenUpdate=False 程序运行后再改回来 118、VBA中默认的数据类型是Variant,你必须选择使用何种数据类型,因为Variant数据类型占用存储空间较大(16或22字节)而且它将影响程序的性能,Vba必须识别Variant类型的变量中存储了何种数据类型。 119、再列一个自定义函数计算价格为10%为运费的简单函数例子
Public Function Shipping(Price) Shipping=Price*0.1 End Function 如还是不懂的话,将上述过程复制到模块中,然后在工作表任意单元格中输入=Shipping(C1)你就会明白 120、ActiveWindow.DisplyGridlines=False 此句用来关闭网格线。
121、100个错误类型 1 应用程序定义或对象定义错误 2 应用程序定义或对象定义错误 3 无 GoSub 返回 4 应用程序定义或对象定义错误 5 无效的过程调用或参数 6 溢出 7 内存溢出 8 应用程序定义或对象定义错误 9 下标越界 10 该数组被固定或暂时锁定 11 除数为零 12 应用程序定义或对象定义错误 13 类型不匹配 14 溢出串空间 15 应用程序定义或对象定义错误 16 表达式太复杂 17 不能执行所需的操作 18 出现用户中断 19 应用程序定义或对象定义错误 20 无错误恢复 21 应用程序定义或对象定义错误 22 应用程序定义或对象定义错误 23 应用程序定义或对象定义错误 24 应用程序定义或对象定义错误 25 应用程序定义或对象定义错误 26 应用程序定义或对象定义错误 27 应用程序定义或对象定义错误 28 溢出堆栈空间 29 应用程序定义或对象定义错误 30 应用程序定义或对象定义错误 31 应用程序定义或对象定义错误 32 应用程序定义或对象定义错误 33 应用程序定义或对象定义错误 34 应用程序定义或对象定义错误 35 子过程或函数未定义 36 应用程序定义或对象定义错误 37 应用程序定义或对象定义错误 38 应用程序定义或对象定义错误
39 应用程序定义或对象定义错误 40 应用程序定义或对象定义错误 41 应用程序定义或对象定义错误 42 应用程序定义或对象定义错误 43 应用程序定义或对象定义错误 44 应用程序定义或对象定义错误 45 应用程序定义或对象定义错误 46 应用程序定义或对象定义错误 47 DLL 应用程序客户太多 48 加载 DLL 错误 49 DLL 调用约定错误 50 应用程序定义或对象定义错误 51 内部错误 52 文件名或文件号错误 53 文件未找到 54 文件模式错误 55 文件已打开 56 应用程序定义或对象定义错误 57 设备 I/O 错误 58 文件已存在 59 记录长度错误 60 应用程序定义或对象定义错误 61 磁盘已满 62 输入超出文件尾 63 记录号错误 64 应用程序定义或对象定义错误 65 应用程序定义或对象定义错误 66 应用程序定义或对象定义错误 67 文件太多 68 设备不可用 69 应用程序定义或对象定义错误 70 拒绝的权限 71 磁盘未准备好 72 应用程序定义或对象定义错误 73 应用程序定义或对象定义错误 74 不能更名为不同的驱动器 75 路径/文件访问错误 76 路径未找到 77 应用程序定义或对象定义错误 78 应用程序定义或对象定义错误 79 应用程序定义或对象定义错误 80 应用程序定义或对象定义错误 81 应用程序定义或对象定义错误 82 应用程序定义或对象定义错误
83 应用程序定义或对象定义错误 84 应用程序定义或对象定义错误 85 应用程序定义或对象定义错误 86 应用程序定义或对象定义错误 87 应用程序定义或对象定义错误 88 应用程序定义或对象定义错误 89 应用程序定义或对象定义错误 90 应用程序定义或对象定义错误 91 对象变量或 With 块变量未设置 92 For 循环未初始化 93 无效的模式串 94 无效使用 Null 95 应用程序定义或对象定义错误 96 由于对象已经激活了事件接受器支持的最大数目的事件,不能吸收对象的事件 97 不能调用对象的友元函数,该对象不是所定义类的一个实例。 98 属性或方法调用不能包括对私有对象的引用,不论是作为参数还是作为返回值 99 应用程序定义或对象定义错误 100 应用程序定义或对象定义错误
122、Private Sub Calendar1_Click() ActiveCell = Me.Calendar1.Value End Sub 123、设置日历控件字号 Private Sub UserForm_Initialize() Me.Calendar1.GridFont.Size = 14 End Sub 124、以下是从金刚金作品里提出来的部份事件代码,做得很好,值得借鉴学习: Private Sub Workbook_Activate() MsgBox "工作簿被切换为作用工作簿", vbInformation, "Workbook_Activate" End Sub Private Sub Workbook_AddinInstall() MsgBox "激活新的加载宏时", vbInformation, "Workbook_AddinInstall" End Sub Private Sub Workbook_AddinUninstall() MsgBox "取消以前选取的加载宏时", vbInformation, "Workbook_AddinUninstall" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "工作簿被关闭之前", vbInformation, "Workbook_BeforeClose" End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean) MsgBox "工作簿打印之前", vbInformation, "Workbook_BeforePrint" End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "工作簿进行保存之前", vbInformation, "Workbook_BeforeSave" End Sub
Private Sub Workbook_Deactivate() MsgBox "工作簿切换为非作用工作簿", vbInformation, "Workbook_Deactivate" End Sub Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox "新建工作表", vbInformation, "Workbook_NewSheet" End Sub Private Sub Workbook_Open() MsgBox "打开工作簿", vbInformation, "Workbook_Open" End Sub Private Sub Workbook_PivotTableCloseConnection(ByVal Target As PivotTable) MsgBox "数据透视表关闭与其数据源的连接之后", vbInformation, "Workbook_PivotTableCloseConnection" End Sub Private Sub Workbook_PivotTableOpenConnection(ByVal Target As PivotTable) MsgBox "数据透视表打开与其数据源的连接之后", vbInformation, "Workbook_PivotTableOpenConnection" End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "工作表" & Sh.Name & "切换为作用工作表", vbInformation, "Workbook_SheetActivate" End Sub Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox "任一单元格双击鼠标之后", vbInformation, "Workbook_SheetBeforeDoubleClick" End Sub Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox "任一单元格单击鼠标右键之后", vbInformation, "Workbook_SheetBeforeRightClick" End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) MsgBox "工作表内容进行重算之后", vbInformation, "Workbook_SheetCalculate" End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) MsgBox "在工作表内进行不同的操作", vbInformation, "Workbook_SheetChange" End Sub Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) MsgBox "工作表" & Sh.Name & "切换为非作用工作表", vbInformation, "Workbook_SheetDeactivate" End Sub Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) MsgBox "按下Excel超链接之后", vbInformation, "Workbook_SheetFollowHyperlink" End Sub Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) MsgBox "数据透视表更新之后", vbInformation, "Workbook_SheetPivotTableUpdate" End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "工作表里选取不同单元格范围时", vbInformation, "Workbook_SheetSelectionChange" End Sub Private Sub Workbook_WindowActivate(ByVal Wn As Window) MsgBox "工作簿切换为作用工作簿", vbInformation, "Workbook_WindowActivate" End Sub Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) MsgBox "工作簿切换为非作用工作簿", vbInformation, "Workbook_WindowDeactivate" End Sub Private Sub Workbook_WindowResize(ByVal Wn As Window) MsgBox "工作簿被打开或窗口最大化、最小化之后", vbInformation, "Workbook_WindowResize" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "选取不同单元格范围时", vbInformation, "Worksheet_SelectionChange" End Sub 125、Rem 选定单元格的个数 Sub t() MsgBox Selection.Cells.Count End Sub 126、Application.OnKey "{F11}", "ccc"禁用F11 127、'选中A列除A1外的第一个非空单元格 [a65536].End(xlUp).Offset(1, 0).Select 128、Private Sub CommandButton1_Click() On Error GoTo ad '注意后面的ad,这是错误处理的用法 i = Range("a1").Value Sheets(CStr(i)).Select ret = MsgBox("是否覆盖", vbYesNo, "") If ret = vbYes Then Range("A5:C7").Copy Sheets(CStr(i)).Range("A1") '重点在copy之后 Else Sheets.Add.Name = i & ".2" Range("A5:C7").Copy Sheets(CStr(i & ".2")).Range("A1") End If End ad: Sheets.Add.Name = i '工作表名的变化是可见的 Range("A5:C7").Copy Sheets(CStr(i)).Range("A1") End Sub 129、用变量取代Sheet1中的“1” For i = 1 To 3 Sheets("sheet" & i).Range("A2") = "1234" Next 130、中英对照 English 繁體中文 簡体中文 Absolute Referencing 絕對參照 绝对引用
Active Cell 現存儲存格 活动单元格 Add-in 增益集 加载宏 Address 位址 地址 Array 陣列 数组 Array Formula 陣列公式 数组公式 Audit 稽核 审核 Bold 粗體 粗体 Bug 蟲 Bug Cell 儲存格 单元格 Circular Reference 循環參照 循环引用 Code 程式碼 代码 Column 欄 列 Command 指令 命令 Comment 註解 注释 Condition 條件 条件 Constant 常數 常数 Cursor 浮標 指针 Cursor 游標 鼠标指针 Data 數據/資料 数据 Data Type 資料型態 数据类型 Debug 偵錯 调试 Debug 除蟲 调试 Declare 宣告 声明 Dependent 從屬 从属 Dialog Box 對話方塊 对话框 Double 雙精度浮點數 双精度浮点数 Double-click (on mouse) 雙按 双击 Drag 拖曳 拖曳 Drop-down Box 清單方塊 ? Edit 編緝 编辑 Electronic Mail / Email 電郵/電子郵件 电子邮件 Event 事件 事件 Execute 執行 执行 File 檔案 文件 Filter 篩選 筛选 Flowchart 流程圖 流程图 Footer 頁尾 页脚 Form 表單 窗体 Format 格式 格式 Function 函數 函数 General 一般 标准 Hard Copy 硬本 硬拷贝 Header 頁首 页眉 Help 說明 帮助
Hyperlink 超連結 超级链接 Immediate Window 即時運算視窗 立即窗口 Indent 縮排 缩进 Insert 插入 插入 Internet 互聯網 因特网 Italic 斜體 斜体 Label 標籤 标签 Link 連結 链接 Loop 迴圈 循环 Macro 巨集 宏 Member 成員 成员 Method 方法 方法 Microsoft 微軟 微软 Module 模組 模块 Newsgroup 新聞組 新闻组 Number Format 數字格式 数字格式 Object 物件 对象 Object Browser 瀏覽物件 对象浏览器 Office Assistant Office小幫手 Office助手 Options 選項 选项 Parameter 參數 参数 Parameter 引數 参数 Path 路徑(檔案的) 路径 Precedent 前導 先例 Program 程式 程序 Program/Subroutine 程序 过程 Project 專案 工程 Property 屬性 属性 Query 查詢 查询 Range 範圍 范围 Relative Referencing 相對參照 相对引用 Right-click (on mouse) 右按 右击 Row 列 行 Scatter Chart XY散佈圖 XY散点图 Scroll Bar 捲軸 滚动条 Select 選取 选择 Single 單精度浮點數 单精度浮点数 Single-click (on mouse) 單按 单击 Smart Tag 智慧標籤 智能标记 Soft Copy 軟本 软拷贝 Sort 排序 排序 Spinner 微調按鈕 微调按钮 Statement 陳述式 表达式 Strikethrough Line 刪除線 删除线
String 字串 字符串 Subscript 下標 上标 Superscript 上標 下标 Tab 索引標籤 Tab Template 範本 模板 Text 文字 文本 Toolbar 工作列 工具栏 Tools 工具 工具 Transpose 轉置 转置 Trendline 趨勢線 趋势线 Underline 底線 下划线 Validation 驗證 确认 Variable 變數 变量 View 檢視 视图 Visual Basic Editor Visual Basic 編輯器 Visual Basic 编辑器 Watch 監看式 监视 Wildcards(*或?) 萬用字元 通配符 Window 視窗 窗口 Wizard 精靈 向导 Workbook 活頁簿 工作簿 Worksheet 工作表 工作表
Part 3: EXCEL自学资料第二集
返回首页
1、如何更改excel默认的行列标签的颜色? 桌面-属性-外观-项目-高级_已选定的项目,设置颜色。 2、系统提供的排序功能最多只能同时依据三个关键字来进行。如果需要依据三个以上的条件来排序,该如何实现? 答:虽然系统一次最多只能同时对三个关键字来排序,但是我们可以利用设置排序关键字的优先级,通过多次排序来实现关键字大于3个以上的排序。 具体操作如下:首先打开工作表。单击“数据”菜单中的“排序”项,依次在“主要关键字”、“次要关键字”、“第三关键字”中选择优先级最低的几个排序关键字,然后执行排序操作。接下来再依次选择优先级较高的几个关键字,进行2次排序。这样直到最高优先级的关键字排序完成为止,就可以实现了对三个以上关键字的排序操作了。 3、若A1-A6中有大于0和小于0的数,请问怎样将其中小于0的数所在的行自动删除。 for i=6 to 1 step -1 if cells(i,1)<0 then rows(i).Delete next i 4、请问:INDEX(data,,1)中的data是什么意思 是定义的名称,具体是什么要看文件。按ctrl+F3看看。 5、快速插入行(列)的快捷键,CTrl+键盘+ 6、桌面上的"网上邻居"没有了,在我的电脑找到了,移动到桌面只是个快捷方式, 在桌面点右键选属性,点“桌面”“自定义桌面”把“网上邻居”前打上勾,确定 7、如何获取一个月的最大天数? :"=DAY(DATE(2002,3,1)-1)"或"=DAY(B1-1)",B1为"2001-03-01 8、数据区包含某一字符的项的总和,该用什么公式 =sumif(a:a,"*"&"某一字符"&"*",数据区) 9、能否在EXCEL中定时打印? Private Sub Workbook_Open() Application.OnTime "9:30:00", "wlqPrint" '将"9:30:00"改为要自动打印的时间 End Sub Sub wlqPrint() '打印 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub 10、比方说要求得g在图示区域中所在列号,如何表达? 数组公式,按ctrl+shift+enter结束。 =MAX((A1:F4="g")*COLUMN(A1:F4))
11、勾怎么输入 按住ALT键输入41420后放开ALT键√ 12、将单元格中的数全部变成万元表示(???)
自定义单元格格式:0"."0, 或:0!.0000 13、自定义名称中的引用范围中可以直接粘贴公式 从编辑栏里Ctrl+C复制,然后Ctrl+V粘贴 14、如果一个单元格中既有数字又有字母,怎么提取其中的数字呢? Function getnumber(rng As String) As String '自定义函数作用:提取当前单元格中的数字 Dim mylen As Integer Dim mystr As String mylen = Len(rng) For I = 1 To mylen mystr = Mid(rng, I, 1) If Asc(mystr) >= 48 And Asc(mystr) <= 57 Then getnumber = getnumber & mystr End If Next I End Function 15、用VB制作EXCEL作品封面 本人在论坛上发了一个EXCEL作品封装实例后,有很多人来信询问怎样用VB打开EXCEL,并且带有启动封面,现本人将过程 底细说出来,希望给大家起到一个抛砖引玉的作用。 一、新建一个文件夹,该文件夹主要是用来装EXCEL工作簿、VB编译的可执行文件、图标文件及帮助文件
用的。 二、打开VB,新建一个标准EXE。 三、1、对form1的设置: Borderstyle=0-none 去掉form1的标题栏 Icon 设定图标 StartupPositio=2 将启动封面始终悬挂在屏幕中部 2、添加一个Timer控件,将其Interval设为1000,双击Timer控件出现代码窗口,输入如下代码: Private Sub Timer1_Timer() Dim Exl As Object Set Exl = CreateObject("Excel.Application") Exl.Workbooks.Open (App.Path & "\" & "DZB.xls") Exl.Visible = True Unload Me End Sub 3、点击文件--生成EXE文件,将其保存到步骤一中的文件夹中去。 大功告成! 推荐使用图标编辑工具AXIcons制作图标文件! 16、邮件合并一步一步学 邮件合并一步一步学: 软件OFFICE2003,EXCEL2003 1、在excel2003中建一个数据表(联系表.xls)如:姓名,身份证号,其它编号,职业,联系方式,输入相应数据,保存; 如想在一张页面中打印多个人的信息,就在excel2003多排几列了!
2、打开一个空白word文档(联系表.doc),点击工具-信函与邮件-邮件合并,这时在你的右面就会出现一个任务窗格; 3、在窗格中选择信函,然后点击下一步:正在启动文档; 4、选择使用当前文档,点击下一步:选取收件人; 5、选择使用现有列表,点击浏览,选取”联系表.xls”然后在弹出的窗口中选择你建表的工作薄(一 般都是sheet1$)。确定,再确定,点出下一步:撰写信函; 6、在你的word文件中建好你想把数据插入后的格式; 想在一张页面中打印多个人的信息,就用文本框做好,一张页面多排几张文本框而已。 7、点击右面的项目的中其它项目(当然你也可选择插入地址块、问候语),你就会看到姓名、姓名1、姓名2等等,把你想要的项目插入到对应的位置即可。 8、在工具栏上点右键,点击邮件合并,在弹出的邮件合并工具栏中点击ABC,就会在域与你的实际项目中切换,工具栏上其它键自己试好了,懂中文一看就知! 17、工具栏>>自定>>格式>>[浅底纹]搬出来用 矩形>>[浅底纹]>>透明>>阴影 18、把Excel表格转换为图片 许多报纸和杂志都介绍过在Excel中,同时按住Shift键点击“文件”菜单,原来的“关闭”菜单项就会变成“全部关闭”。如果我们在按下Shift键的同时点击“编辑”菜单,原来的复制和粘贴就会变成“复制图片”和“粘贴图片”。利用这一功能,我们可以将一个数据表以图片的形式进行复制,从而将其转换为图片。方法如下: 首先选中需要复制成图片的单元格区域,然后按住Shift键依次选择“编辑→复制图片”命令,接着弹出“复制图片”窗口,选择“图片”单选项后点击“确定”按钮,这时就将选定的表格区域复制成图片了。最后复制到目标只需直接选择“粘贴”命令即可(或者按Shift键再选择“编辑→粘贴图片”命令)。我们还可以将其在Word中进行粘贴。 另外,在复制图片时如果选择了“如打印效果”单选项,在粘贴的时候如果表格没有边框,复制后的图片也不会出现边框。 19、=HYPERLINK("#表1!L2","轻客支撑"),不明白#号的意思 #加在表名前,是指当前工作簿,加在单元格前是指当前工作表
20、在B1中同步显示A列中最后一行的内容 最后一行为文本: =offset($b$1,MATCH(CHAR(65535),b:b)-1,) 最后一行为数字: =offset($b$1,MATCH(9.9999E+307,b:b)-1,) 或者:=lookup(2,1/(b1:b1000<>""),b1:b1000)
21、为Excel中的“中文”添加拼音 由于工作的需要,经常要为中文添加拼音,这样可以为某些生僻的汉字加上拼音注释。如果是在Word中就比较简单了,但在Excel中应该怎么添加呢? 答:如果要在Excel中为“中文”添加拼音,可以执行如下的操作步骤(下面以Excel 2003为例进行介绍): (1)选中需要输入拼音的单元格区域,执行菜单栏中的【格式】|【拼音指南】|【显示或隐藏】命令(如图1所示),这样就可以为该单元格区域激活拼音信息的显示模式,否则即使输入后也处于隐藏状态。 (2)输入正常的中文文字,然后执行菜单栏中的【格式】|【拼音指南】|【编辑】命令,此时就可以直接在单元格的上半部区域输入相应的拼音了,如图2所示。 (3)一般情况下,由于拼音缺省使用半角字符,而且又缺省使用左对齐模式,因此看起来不是那么美观。因此可以执行菜单栏中的【格式】|【拼音指南】|【设置】命令,在打开的“拼音属性”对话框中的“字体”选项卡中可以调整拼音的字体、字形、字号、下划线、颜色等格式(如图3所示);在“设置”选项卡中重新设置拼音与文字的对齐状态,比如左对齐、居中、分散对齐等(如图4所示),建议选择“分散对齐”,这样拼音与文字就可以一一对应了。 22、怎样不修改单元格的公式,就可以不显示“#DIV/0!” 不能改公式就采用条件格式,选取该区域(如整个D列),格式-条件格式-公式-输入=ISERROR(D1),下步选格式为字体-白色.。 23、评委打分中,如何去掉两个以上最高分,两个以上最底分,求剩余人员的平均分?同时显示出被去掉的分数。 看看trimmean()函数帮助。 被去掉的分数:
最大两个:=large(data,{1;2}) 最小两个:=small(data,{1;2}) 24、怎样很简单的判断最后一位是字母 right(a1)*1 出错的字母 =IF(ISNUMBER(--RIGHT(A1,1)),"数字","字母") =IF(ISERR(RIGHT(A1)*1),"字母","数字") 25、不知道--是什么意思? VALUE(F1),--F1以及其他的算术运算的办法如:0+F1,F1-0,F1*1,F1/1以及乘幂的办法等等…… 这几种方式都是一样的。只要是文本型数字都可以用这个办法变为数值以便运算;对于逻辑值(TRUE,FALSE),除了VALUE函数外,其他几种都可以。 但据说,测试的结果,--F1速度最快 26、请问如何 设置单元格,令其不接受包含空格的字符 选定A列 数据——有效性——自定义——公式 =iserror(find(" ",a1)) 数据--有效性--自定义--公式 =len(a1)=len(trim(a1)) 27、=VLOOKUP(B3,IF({1,0},G$3:G$5,F$3:F$5),2,0) 公式中的 IF({1,0},G$3:G$15,F$3:F$15)作何解释? 我的理解:{1,0}的含义是1代表TRUE(即逻辑值为真),0代表FALSE(即逻辑值为假),公式为 =VLOOKUP(B3,IF({TRUE,FALSE},G3:G17,F3:F17),2,0)也同样正确,这样更好理解.通过执行IF({TRUE,FALSE},G3:G17,F3:F17)为真,得到G3:G17这列数,由于是数组,再执行FALSE得到F3:F17,因此
得到一个2列多行的数组. 28、不同工作簿间的引用如何不打开源工作簿、不弹出链接对话框且能自动更新数据。经过一段时间的摸索,我发现以下方法可供参考。 1、新建工作簿,输入数据(作为源工作簿),保存,保存类型选wk4(1-2-3)(*.wk4),文件名为book1。 2、再建立一个工作簿,输入要引用源工作簿的公式,保存文件名称为book2。 3、关闭工作簿。 再打开book2看是不是不出现链接对话框。 或打开book1,修改一下数据,保存,关闭,再打开book2,是不是已经更新了数据。 另:引用多个源工作簿也可以,但源工作簿要保存wk4(1-2-3)(*.wk4)类型,我已试过,大家可以试试看。 以上是winXP+excel2003,较低版本的朋友,请把保存类型选为:wk3或wk1。 29、我的单元格怎么输入时间后前面自动加了等号,然后2005年就变成了1905年了呢? 工具——选项——1-2-3帮助——转换 lotus 123 公式 有无打勾?去掉 30、原来的函数是=a1+a4+a7+a10+a13+a16+a19+a22..... 现在想用offset来简化公式,我只会用比如a4=offset(a1,3,0)的,不会弄出一个数组出来实现上面的效果 sum(n(offset(a1,(row(1:10)-1)*3,))) row(1:10)={1;2;3;4;5;6;7;8;9;10} (row(1:10)-1)*3={0;3;6;9;12;15;18;21;24;27} 自A1向下偏移,就是a1、a4、a7、a10、a13、、、a28
31、未被发现的两个日期格式符号 1、bb或bbbb:如2005-1-1设置自定义格式bb或bbbb,结果为48或2548,与2005年份的差为543,发现任
何日期这个差数是固定的,经查询有关资料,公元前544元是佛历元年,所以我认为这个与佛历有关(佛教的英文是B开头的) 2、e:对日期设置自定义格式e,结果是公历的四位年份,为2005-1-1显示为2005,完全可以代替yyyy格式符号 第一个格式在EXCEL使用中可能从来也不会用到,权作一个小知识吧 以上是在EXCEL2003下发现的,经检验在EXCEL2000下没有 32、工作表的A1单元格为B1:H1的总和,B1:H1又有其它公式,如何让A1当为负数时,让它不显示负数而显示0,其它时候为正常总和! if(sum(B1:H1)<0,0,sum(B1:H1)) 自定义单元格格式: G/通用格式;"0";0 正数,负数,零,不过第一节中正数用,分隔要如何设定? #,#.##;"0";0 小数点后面保留了两位,可根据需要调节小数点后面#的个数 33、发现在名称定义中只能逐个删除被定义的名称,有何方法一次全部删除表中的名称? Sub DelName() For Each Name In ThisWorkbook.Names Name.Delete Next End Sub 34、在一个工作表中引用其他工作表中的数据,但是被引用的工作表不是固定的,根据我输入的工作表名自
动选择相应的工作表中的数据,请问在公式里怎样引用? =INDIRECT("A1"&"!"&"E1") A1为工作表名 35、由于我这个.csv 格式要求单元格内文档不能有换行,现在有几万条记录,不知道怎么设置?就是在一个单元格内,一行文字不能换行(回车),只能一直向后写。。。 如果已经存在的数据,用查找替换,查找内容输入ALT+小键盘010,替换为空 如果控制输入时不能输入换行符,用数据-有效性,公式为=COUNTIF(A7,"*"&CHAR(10)&"*")=0 36、160000元 用16万元表示 如何设置 我理解!的作用是把后面的这个字符作为符号处理,换句话说: #!.0,万元 和 #"."0,万元 这两种写法的作用、意义都是完全相同的 输入3451 显示3#451 单元格格式怎样设定 自定义格式:0!#000 也可以0"#"000 37、例如雷同“980203”的如何变为“98.02.03" 如果都是6位数的,自定义格式:00"."00"."00 38、奇数行求和 =SUMPRODUCT((A1:A1000)*MOD(ROW(A1:A1000),2)) 偶数行求和 =SUMPRODUCT((A1:A1000)*NOT(MOD(ROW(A1:A1000),2))) 39、EXCEL中定位的快捷键是F5。 40、快速隐藏单元格所在位置的行与列 1. 按ctrl+9 可隐藏选中单元格或区域所在的行 2. 按ctrl+0 可隐藏选中单元格或区域所在的列
恢复隐藏的行和列的快捷键是: ctrl+shift+0 ctrl+shift+9 隐藏当前工作表 格式----工作表----隐藏 隐藏当前工作薄 窗口----隐藏
41、如果数值的有效性是基于已命名的单元格区域,并且在该区域中有空白单元格,则设置“忽略空值”复选框将使有效单元格中输入的值都有效。同样,为有效性公式所引用的任何单元格也如此:如果引用的单元格是空值,则设置“忽略空值”复选框将使有效单元格中输入的值都有效。 42、每次默认的都是自动更新,所以我通过[编辑]-[链接]-[启动提示]里设置选择[不显示该警告,但是更新链接],可是设置好了以后,每次重新打开工作薄,都提示是否更新一下链接文件内容...我不知道为什么会这样,我希望得到帮助 这个管用,而且自动更新链接。 在“工具”菜单上,单击“选项”,再单击“编辑”选项卡, 清除“请求自动更新链接”复选框。 43、--是把文本数字转换为数字型数字 44、如何对日期进行上、中、下旬区分 =LOOKUP(DAY(A1),{0,11,21,31},{"上旬","中旬","下旬","下旬"}) 44、EXCEL中为汉字加注拼音 格式_拼音信息_编辑(显示或隐藏) 45、改变数据有效性下拉菜单的宽度 一般地,数据有效性的下拉单的宽度与你在某张表中第一次设置时的“单元格宽度”相关(所在单元格宽度不够时); 其后设置的,其宽度与第一次设置时的宽度相同; 即使其后再调整各单元格宽度。 但有时会有例外发生,即已设置的宽度失效,而是跟着所在单元格的宽度走。
46、CTRL+BACKSPACE 滚动并显示活动单元格快捷键如何使用 把光标定位在一个地方(如C10),然后用鼠标滚轮向下滚几屏,这是如果想看刚才的C10,按…… 47、帮助里边真的什么知识都有,而且还很全面,比世面上的任何一本书都全面,唯一的缺点是不系统。有空常看看,绝对错不了。 48、单元格区域引用的结果会产生一个单元格值组成的数组,其中一行多列或多行一列的单元格区域引用产生的是一维数组,而多行多列的单元格区域引用产生的是二维数组。 49、另类页脚处理方法,设置固定页脚区域 选择页脚区域,按住Shift键,编辑—复制图片,再把图片插入到自定义页脚里(2003版可以,2000没有这个功能)。 50、转换A1与R1C1引用样式 Sub RC_A1() With Application If .ReferenceStyle = xlR1C1 Then .ReferenceStyle = xlA1 Else .ReferenceStyle = xlR1C1 End If
End With End Sub
51、我在单元格中填上“="现在是"&NOW()”,想显示目前的时间,为什么会变成“今天是38645.6480”,有什么办法解决吗? 方法1=now()单元格设置为你想显示的方式,如:现在是yyyy年m月d日h点m分。 方法2、直接用TEXT()函数:=TEXT(NOW(),"现在是yyyy年m月d日h点m分") 第一种方法较好,可以参与计算。 =TEXT(NOW(),"现在是 yyyy/mm/dd h:mm AM/PM") 显示现在是 2005/04/14 4:42 PM 52、自定义单元格格式 [=0]"男";[=1]"女"; 则可实现输入0显示为“男”。输入1显示为“女”。 53、excel里面如何添加自定函数帮助信息呢 在VBE打开对象浏览器,找到自定函数,右键——属性中添加 54、怎么解决Excel自动将0开头的数字自动删除0? 是从“获取外部数据”导入的吗?在第3步可以选择“列数据格式”为文本,这样零就不会被删除了。 55、打开多个EXCEL文档,照理应该在状态栏显示多个打开的文档,以便各文档互相切换,但现在只能显示一个文档,必须关掉一个才能显示另一个,关掉一个再显示另一个,不知何故? 可以从“窗口”菜单中切换窗口。
或者改回你原来的样子:工具/选项/视图,选中任务栏中的窗格。 56、目的:表中>50000的单元格红色显示。做法:选择整张表,在条件格式命令中,设置了“>50000以红色填充单元格“的条件,出现的问题:表头(数值为文本)的单元格也呈红色显示。我知道,原因是因为区域选择得不对,如果只选择数字区域不会出现这种情况,如果表结构简单,则好处理,如果表格结构复杂,这样选择就很麻烦。有没有办法选择整张表,但是表头(数值为文本)的单元格不被条件格式。 答:条件格式设置公式=--A1>50000 问=--A1>50000中的--代表什么意思, 答:转变为数值.与+0,*1,是一样的效果。 57、、如何打印行号列标? 答:文件菜单-----页面设置---工作表----在打印选项中的行号列标前打勾。 58、如何打印不连续区域? 答:按CTRL键不松,选取区域,再点文件菜单中的打印区域--设置打印区域。 59、打印时怎样自动隐去被0除的错误提示值? 答:页面设置—工作表,错误值打印为空白 60、如何设置A1当工作表打印页数为1页时,A1=1,打印页数为2页时,A2=2,...? 答:插入名称a=GET.DOCUMENT(50, "Sheet1")&T(NOW()),在A1输入=a
61、Add More Levels of Undo to Excel for Windows
增加excel的后悔次数!!!excel默认的是16次,不信你试试!!! 现在我改成30次。 到注册表(不知道,在开始运行里输入regedit回车即可) 到以下位置!!!!我的是office2003!!!!在11.0处可能有所不同! [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options] 新建dword值 键名为UndoHistory (双击名称)值为10进制,输入数值为30。即可 62、我想在几千个数据中列出没有重复的数据 答:数据_筛选_高级筛选_选择不重复记录。 63、我需要保留一位小数,不管后面是什么数字,超过5或不超过5,都向前进一位. 例如:329.99----->330.00 329.84------------>329.90 329.86------------>329.90 答:=roundup(*,2)或=round(a1+0.04,1) 64、D列为字符型值,转换为数型的的值。如何进行操作 答: 复制任一空单元格。选中D列,选择性粘贴,加。
65、在Excel中如何输入带有上、下标的符号 答:选中,设置单元格格式,上标或下标。 66、怎样使一个单元格里的数据,变成每个数字占一个单元格啊? 答:《数据》->分列->选中固定宽度,点击《下一步》,在预览分列效果中的数字中间依次点击,点击《完成》按钮,OK! 67、将一列文本格式的数据转换为常规 答:数据—分列,一直点下一步,最后一步选常规就行了。 复制(空单元格)或1,选择性粘贴加或乘除。 68、小于10以下用红色,以上用蓝色标识单元格 答:自定义格式 [红色][<=10];[蓝色][>10] 也可设定两组条件格式。 69、如何用函数来获取单元格地址 答:=ADDRESS(ROW(),COLUMN()) 70、求A1:B10中A列等于1的对应B列中的最小值 答:=min(if(a1:a10=1,b1:b10))
输入后按ctrl+shift+enter完成。
71、怎样定义格式表示如00062920020001、00062920020002只输入001、002 答:格式----单元格----自定义----"00062920020"@----确定 72、如何统计A1:A10,D1:D10中的人数? 答:=COUNTA(A1:A10,D1:D10) 73、A2单元格为 2005-3-24 10:00:00 想在B2单元格通过公式转换成 2005-3-24 23:59:59 如何转? ①=(TEXT(A2,"yyyy-m-d")&" 23:59:59")*1 然后设置为日期格式 ②=INT(A2)+"23:59:59" 再把单元格格式设置一下。 ③=INT(A2+1)-"0:0:1" 74、我用方向键上下左右怎么不是移动一个单元格,而是向左或向下滚动一屏,好奇怪啊,平时都好好的,有没有解决的办法? 答:是不是按下了ScrollLock键。 75、复制粘贴中回车键的妙用 1、 先选要复制的目标单元格,复制后,直接选要粘贴的单元格,回车OK;
2、先选要复制的目标单元格,复制后,选定要粘贴的区域,回车OK; 3、先选要复制的目标单元格,复制后,选定要粘贴的不连续单元格,回车OK。 76、摄影功能 用摄影功能可以使影像与原区域保持一样的内容,也就是说,原单元格区域内容改变时,影像也会跟着改变,是个很好用的功能。 77、定义名称的妙处 名称的定义是EXCEL的一基础的技能,可是,如果你掌握了,它将给你带来非常实惠的妙处! 1. 如何定义名称 插入 – 名称 – 定义 2. 定义名称 建议使用简单易记的名称,不可使用类似A1…的名称,因为它会和单元格的引用混淆。还有很多无效的名称,系统会自动提示你。 引用位置:可以是工作表中的任意单元格,可以是公式,也可以是文本。 在引用工作表单元格或者公式的时候,绝对引用和相对引用是有很大区别的,注意体会他们的区别 – 和在工作表中直接使用公式时的引用道理是一样的。 3. 定义名称的妙处1 – 减少输入的工作量 如果你在一个文档中要输入很多相同的文本,建议使用名称。例如:定义DATA = “I LOVE YOU, EXCEL!”,你在任何单元格中输入“=DATA”,都会显示“I LOVE YOU, EXCEL!”
4. 定义名称的妙处2 – 在一个公式中出现多次相同的字段 例如公式=IF(ISERROR(IF(A1>B1,A1/B1,A1)),””, IF(A1>B1,A1/B1,A1)),这里你就可以将IF(A1>B1,A1/B1,A1)定义成名称“A_B”,你的公式便简化为=IF(ISERROR(A_B),””,A_B) 5. 定义名称的妙处3 – 超出某些公式的嵌套 例如IF函数的嵌套最多为七重,这时定义为多个名称就可以解决问题了。也许有人要说,使用辅助单元格也可以。当然可以,不过辅助单元格要防止被无意间被删除。 6. 定义名称的妙处4 – 字符数超过一个单元格允许的最大量 名称的引用位置中的字符最大允许量也是有限制的,你可以分割为两个或多个名称。同上所述,辅助单元格也可以解决此问题,不过不如名称方便。 7. 定义名称的妙处5 – 某些EXCEL函数只能在名称中使用 例如由公式计算结果的函数,在A1中输入’=1+2+3,然后定义名称 RESULT = EVALUATE(Sheet1!$A1),最后你在B1中写入=RESULT,B1就会显示6了。 还有GET.CELL函数也只能在名称中使用,请参考相关资料。 8. 定义名称的妙处6 – 图片的自动更新连接 例如你想要在一周内每天有不同的图片出现在你的文档中,具体做法是: 8.1 找7张图片分别放在SHEET1 A1至A7单元格中,调整单元格和图片大小,使之恰好合适 8.2 定义名称MYPIC = OFFSET(SHEET1!$A$1,WEEKDAY(TODAY(),1)-1,0,1,1)
8.3 控件工具箱 – 文字框,在编辑栏中将EMBED("Forms.TextBox.1","")改成MYPIC就大功告成了。 这里如果不使用名称,应该是不行的。 此外,名称和其他,例如数据有效性的联合使用,会有更多意想不到的结果。 78、第一列每个单元格的开头都包括4个空格,如何才能快速删除呢? 查找替换最方便 79、一、在单元格中显示表名,两个方法: 方法一:使用自定义函数: Function bookname() bookname = ActiveSheet.Name End Function 使用:在单元格中输入公式:=bookname() ,即可返回当前工作簿的标签名字 方法二:使用系统函数Cell(): 在单元格中输入公式:=Cell("filename") 就会返回该工作簿和工作表的名字(包括绝对路径名),剩下的就根据你自己的需要运用一些文本处理函数对它进行处理就行了 (说明:该函数必须在工作簿已经保存的情况下才生效) 80、如何快速地将表格中的所有空格用0填充?其中空格的分布无规律!
选中数据所在区域》定位》空值》输入0》ctrl+enter
81、我在1行~10行中间有5个隐藏的行,现在选择1行~10行-复制,然后到另一张表格,右键单击一单元格,粘贴,那5个隐藏的行也出现了,请问怎样不让这5个隐藏的行出现呢? 答:Ctrl+* 工具、自定义_编辑_选定可见单元格。 82、在某个单元格中(如A1)输入一个四则运算表达式"3*(2+5)+6/3",要求函数格式 MyFun(A1)返回计算结果 Function MyFun(X As Range) MyFun = Evaluate(X.Formula) End Function 83、MATCH 返回在指定方式下与指定数值匹配的数组(数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数。
语法 MATCH(lookup_value,lookup_array,match_type) Lookup_value 为需要在数据表中查找的数值。 Lookup_value 为需要在 Look_array 中查找的数值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。 Lookup_value 可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。 Lookup_array 可能包含所要查找的数值的连续单元格区域。Lookup_array 应为数组或数组引用。 Match_type 为数字 -1、0 或 1。Match-type 指明 Microsoft Excel 如何在 lookup_array 中查找 lookup_value。 如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array 必须按升序排列:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE。 如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。 如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array 必须按降序排列:TRUE、FALSE、Z-A、...、2、1、0、-1、-2、...,等等。 如果省略 match_type,则假设为 1。 说明 函数 MATCH 返回 lookup_array 中目标值的位置,而不是数值本身。例如,MATCH("b",{"a","b","c"},0) 返回 2,即“b”在数组 {"a","b","c"} 中的相应位置。
查找文本值时,函数 MATCH 不区分大小写字母。 如果函数 MATCH 查找不成功,则返回错误值 #N/A。 如果 match_type 为 0 且 lookup_value 为文本,lookup_value 可以包含通配符、星号 (*) 和问号 (?)。星号可以匹配任何字符序列;问号可以匹配单个字符。 示例 如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法 1. 创建空白工作簿或工作表。 2. 请在“帮助”主题中选取示例。不要选取行或列标题。 从帮助中选取示例。 3. 按 Ctrl+C。 4. 在工作表中,选中单元格 A1,再按 Ctrl+V。 5. 若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
1 2 3 4 5 A B Product Count Bananas 25 Oranges 38
Apples 40 Pears 41 公式 说明(结果) =MATCH(39,B2:B5,1) 由于此处无正确的匹配,所以返回数据区域 B2:B5 中最接近的下一个值 (38) 的位置。(2) =MATCH(41,B2:B5,0) 数据区域 B2:B5 中 41 的位置。(4) =MATCH(40,B2:B5,-1) 由于数据区域 B2:B5 不是按降序排列,所以返回错误值。(#N/A) 84、显示比例小于40%即出现了“名称”
85、如何求出一个人到某指定日期的周岁?
=DATEDIF(起始日期,结束日期,"Y") 86、假如A栏里有任一单元格有"$"字符串,则等于1,否则等于0 公式如何写? =IF(COUNTIF(A:A,"*$*")>0,1,0) =(countif((A:A,*$*)>0)+0 87、如何限制单元数值上限(有公式的情况下)? 规定上限数值后,公式中任何数值改变都不会让此数值变化更大,超过限制数值? =Min(公式,10),不超过10 88、在A1单元格中输入AA, B1中要得到第几列. =COLUMN(INDIRECT(A1&"1")) 89、"++"以及"--"分别代表什么意思? "++" = "=+"
"--" = "=" 90、【选择性粘贴】里的【跳过空单元】到底有什么用啊? 跳过空格是指: 跳过剪切板上的空格,只复制,并保持他们的位置,粘贴到其他地方. 而不是指被粘贴的单元格. 这个功能非常有用,可以防止空白单元格替换原来的数据
91、DATEDIF计算两个日期之间的天数、月数或年数。提供此函数是为了与 Lotus 1-2-3 兼容。 语法 DATEDIF(start_date,end_date,unit) Start_date 为一个日期,它代表时间段内的第一个日期或起始日期。日期有多种输入方法:带引号的文本串(例如 "2001/1/30")、系列数(例如,如果使用 1900 日期系统则 36921 代表 2001 年 1 月 30 日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。有关日期系列数的详细信息,请参阅 NOW。 End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。 Unit 为所需信息的返回类型。 Unit返回"Y"时间段中的整年数。"M"时间段中的整月数。"D"时间段中的天数。"MD"start_date 与 end_date 日期中天数的差。忽略日期中的月和年。"YM"start_date 与 end_date 日期中月数的差。忽略日期中的日和年。"YD"start_date 与 end_date 日期中天数的差。忽略日期中的年。
说明 Microsoft Excel 按顺序的系列数保存日期,这样就可以对其进行计算。如果工作簿使用 1900 日期系统,则 Excel 会将 1900 年 1 月 1 日保存为系列数 1。而如果工作簿使用 1904 日期系统,则 Excel 会将 1904 年 1 月 1 日保存为系列数 0,(而将 1904 年 1 月 2 日保存为系列数 1)。例如,在 1900 日期系统中 Excel 将 1998 年 1 月 1 日保存为系列数 35796,因为该日期距离 1900 年 1 月 1 日为 35795 天。请查阅 Microsoft Excel 如何存储日期和时间。 Excel for Windows 和 Excel for Macintosh 使用不同的默认日期系统。有关详细信息,请参阅 NOW。示例 DATEDIF("2001/1/1","2003/1/1","Y") 等于 2,即时间段中有两个整年。 DATEDIF("2001/6/1","2002/8/15","D") 等于 440,即在 2001 年 6 月 1 日和 2002 年 8 月 15 日之间有 440 天。 DATEDIF("2001/6/1","2002/8/15","YD") 等于 75,即在 6 月 1 日与 8 月 15 日之间有 75 天,忽略日期中的年。 DATEDIF("2001/6/1","2002/8/15","MD") 等于 14,即开始日期 1 和结束日期 15 之间的差,忽略日期中的年和月。 92、如何在EXCEL表格的一个单元格中设定校验。比如,单元格均为手工输入,某单元格必须等于其他几个单元格之和,如不等,则该单元格显示为红色。 用条件格式公式=D1<>SUM($A1:$C1) 93、A1]=abcabca 求a在单元格[A1]内出现次数?
=LEN(A1)-LEN(SUBSTITUTE(A1, "a", "")) 94、20040404如何转为2004-4-4 =text(a1,"0000-00-00") TEXT(Z12,"????-??-??") =LEFT("20040404",4)&SUBSTITUTE(RIGHT("20040404",4),0,"-") 使用分列最好 95、假如A2单元格有内容,就在E2单元格里面填上今天的日期."2005-5-30",如果明天,就填明天的日期.2005-5-31,但昨天的日期."2005-5-30",不改变. 建议使用VBA,用循环引用也可以: 工具—选项—重新计算—迭代计算—最多迭代次数1 =if(a2="","",if(e2="",now(),e2)) 96、当你的领导或者同事要使用你的机器发现面目全非,自定义太多弄的自己都头大了,这时你想恢复EXcel的本色却急的满头大汗? 这时最能解决这些问题的就是用户设置保存向导了.(要提前做) 在程序---OFFICE工具中可以找到它,他有保存本机设置和把设置应用到本机两个选项.多保存几个,方便在不同的个性菜单中切换
97、我现在要在一个22位的数值中,提取其中第10,11,12位的数字,不知道可有什么好的方法 =MID(A1,10,3) 我想计算总米数=卷长*卷数, 但由于原数据库中卷长带有单位(如:1000m), 可不可以不需去掉单位直接用函数得出总米数? =substitute(a2,"m",)*b2 98、在某格中输入一串数字,如何使它能象输入密码一样显示******呢? 如果需要输入负数、文本时,也出现******,则自定义格式为: **;**;**;** 99、用函数得出带完整路径的文件名 =CELL("filename") 100、“定义名称”的方法解除嵌套函数的限制 EXCEL中一个众所周知的限制是你不能嵌套超过7层函数.例如下面的公式是错误的,因为限制被超过. =IF(Sheet1!$A$4=1,11,IF(Sheet1!$A$4=2,22,IF(Sheet1!$A$4=3,33, IF(Sheet1!$A$4=4,44,IF(Sheet1!$A$4=5,55,IF(Sheet1!$A$4=4,44, IF(Sheet1!$A$4=5,55,IF(Sheet1!$A$4=6,66,IF($A$4=7,77,FALSE))))))))
通常的方法,如果你有一个公式超过这个限制,你会考虑用VBA代替.然而,如果你不想使用VBA,你可以通过对公式的一部分”定义名称”来解决这种限制. 我们利用一个IF嵌套公式来测试 IF A4 = 1 Then 11 Else If A4 = 2 Then 22 Else If A4 = 3 Then 33 Else If A4 = 4 Then 44 ... Else If A4 = 13 Then 130 Else "Not Found" 当然在实践应用中,我们最好利用VLOOKUP这个函数去实现结果,但这里我们的目的是做个演示.首先,我们定义一个名叫”ONE TO SIX”的名称, 里面包括公式: =IF(Sheet1!$A$4=1,11,IF(Sheet1!$A$4=2,22,IF(Sheet1!$A$4=3,33, IF(Sheet1!$A$4=4,44,IF(Sheet1!$A$4=5,55,IF(Sheet1!$A$4=4,44, IF(Sheet1!$A$4=5,55,IF(Sheet1!$A$4=6,66,FALSE)))))))) 接着,再定义另一个名叫”SEVERTOTHIRTEEN”的名称,里面包括公式: =IF(Sheet1!$A$4=7,77,IF(Sheet1!$A$4=8,88,IF(Sheet1!$A$4=9,99,
IF(Sheet1!$A$4=10,100,IF(Sheet1!$A$4=11,110,IF(Sheet1!$A$4=12,120, IF(Sheet1!$A$4=13,130,"NotFound"))))))) 最后,在B4单元格中输入下面的公式: =IF(OneToSix,OneToSix,SevenToThirteen) 这样就解决了被嵌套函数的限制.因为公式中没有一个单独的部分超过限制,即使是”各个组成部分的集合”也没有超过限制. 当你编制一个超过限制的嵌套函数时可以使用这种方法.————————zhdi
101、工作表名设为变量 =INDIRECT("月份!"&ADDRESS(ROW(),COLUMN())) 此公式放在A1单元格,则是对1月A1单元格的引用,如1月A1单元格为10,则返回10。 =INDIRECT("月份"&E$1&"!"&ADDRESS(ROW(),COLUMN())) 此公式将工作表名设为变量,变量为当前表的E1单元格的值,如E1为2,则引用月份2表中相对应的值。 102、如何把“2005年5月1日”转换成“20050501”? =YEAR(A1)&TEXT(MONTH(A1),"00")&TEXT(DAY(A1),"00" ) YEAR(A1)&IF(MONTH(A1)<10,"0"&MONTH(A1),MONTH(A1))&IF(DAY(DAY(A1)<10),"0"&DAY(A1),DAY(A1)) =TEXT(A1,"yyyymmdd")
或者自定义格式:yyyymmdd 103、今天是10月31日,我希望一个月后应该是11月30日 工具_加载宏VBA 分析工具库 =edate(today(),1) 104、trim函数的说明是如果是英文字符间有多个空格时会保留一个空格,但为何中文之间的空格也不能全部去掉呢? 要把字符(无论中、英文)之间的空格全部去掉, 公式为 : =SUBSTITUTE(A1," ","") 但此公式只能消除CHAR32空格, 你附件单元格A1的例子中, 包含有CHAR160空格, 和CHAR32空格 公式要改为 : =SUBSTITUTE(SUBSTITUTE(A1," ",""),CHAR(160),"") 单元格A1的例子为 : YES 1] 消除空格, B1输入公式 : =SUBSTITUTE(SUBSTITUTE(A1," ",""),CHAR(160),"") 返回 YES
2] 查看字符串字数 A2, 输入公式 : =LEN(A1) 返回 13 B2, 输入公式 : =LEN(B1) 返回 3 结果证明B1巳没有空格了. 3] 查看单元格数据的空格 : A3, 输入公式右拖至N3 : =CODE(MID($A1,COLUMN(A:A),1)) 返回 : 160,32,160,160,32,160,160,32,160,89,69,83,160,#VALUE! A4, 输入公式右拖至D4 : =CODE(MID($B1,COLUMN(A:A),1)) 返回 : 89,69,83,#VALUE! 结果证明B1, CHAR160空格, 和CHAR32空格, 巳消除了. 105、计算B列最后一个有数据(不含‘ 空格)单元格的行号 =MATCH("*",$B:$B,-1) 106、函数创建链接 =HYPERLINK("[Book1.xls]sheet3!A3","点击后链接到表3的A3") 107、把A列后面统一加“-1”,怎样自动加不用手工逐个加?有没有快速方法?
选中A列,点右键选"设置单元格格式","自定义",类型G/通用格式后加"-1" 108、大家知道,通过自定义格式常常可以解决一些显示问题:如需要在单元格中显示为:123人,456.00元、ABCD00789,实际上单元格内容仅仅为:123、456、789,这样的问题我们常常都通过自定义格式来实现,在显示上能够满足要求。 但如果有这样一个需求:需要将显示内容直接转换成单元格实际内容?那又该如何快速转换呢? 1、选择区域ctrl+C连续两次,然后选择office粘贴板中的数据框中的下拉按钮,出现快捷菜单,选粘贴,然后右键点击选择区域,选择性粘贴-〉文本。 不过2000的没有这个选项,,在2000用同样的方法试验发现.选择区域ctrl+C连续两次,然后直接粘贴,再删除,这时再选择性粘贴,选文本,就是了. 2、自定义一个函数如下: Function abc(myRange As Range) abc = myRange.Text End Function 然后调用 3使用Get.Cell(53,A1)也可以 4、先复制到记事本再复制回EXCEL
原理:复制到记事本的是excel中的显示文本。 109、在工作表中点击菜单 文件->发送->邮件收件人->以附件形式发送收件人一栏请填写:邮箱地址,,点击发送可以了. 或新建邮件,收件人一栏请填写: 邮箱地址,然后用鼠标把那个 excel 文件拖到我的名字下面就可以点击发送了. 110、求非空单元格数量 公式计算出来的数据,COUNTA不能用的(否则空字符也计算进去了) =COUNTIF($E$3:$E$65536,"?*") 强制计数至少1个字符的单元格数。
111、(精) 动态求和公式,自A列A1单元格到当前行前面一行的单元格求和. =SUM(INDIRECT("A1:A"&ROW()-1)) 112、在使用SUM函数在单元格中输入超过30个参数时,你将得到一个"参数太多"的错误提示。 解决办法:在引用参数的两边多加一个括号,这时,SUM把括号内的最多可达254个参数当成一个处理。(主要是受公式长度限制,理论上可以达到无数个) 113如果您觉得公式复杂了,或是不直观 偶给你提供两个捷径: 方法一:选择公式单元格-〉菜单栏-〉[工具]-〉[公式审核]-〉[公式求值] 然后按照导向提示,一步步地观察公式求值的过程。(2003版适用)
方法二:选择公式单元格-〉选取编辑栏或F2-〉用鼠标置亮公式中你想查 看的那段-〉按F9,会显示该段的计算结果。 114请问有没有返回工作表名称的函数? 插入—名称—定义: sh=replace(get.document(1),1,find("]",get.document(1)),)&t(now()) 单元格输入=sh GET.DOCUMENT是宏表函数,当数据变动时无法自动计算,now()是易失性函数,任何变动都会强制计算,宏表函数所以加上now()就可以自动重算了,T()用来将now()产生的数值转化为空文本。 115、显示当前工作表的表名 =MID(CELL("filename"),FIND("]",CELL("filename"))+1,255) 116、我要自动生成数据在K29+010~K29+600之间的数据(显示为K29+XXX) =TEXT(INT(RAND()*591)+10,"K29+000") 117、我想把列P1~P60的数据引用到行U1~CB1,本来想用公式=$P1拉动复制,结果不行。 U1=INDIRECT("P"&COLUMN()-20),向右拉
118、 姓名 外语 数学 王 86 李 95 张 80 姓名 外语
数学 李 95 90 张 80 80 王 86 75 将表1的姓名导入自定义序列,在表2按此自定义序列排序 或使用vlookup公式 表1的C2 =vlookup(a2,表2!a:c,3,0)
[求助]如何将2个排列顺序不同的表统一一下 119、如果你要在A3的前面插入100行,可以这样: 在名称框输入 3:103----回车-----ctrl+shift+"+"(大键盘) 120、VBA从哪学起 1、录制宏; 2、数据类型(主是整型和字符串型); 3、程序结构(主要是分支,判断,循环); 4、EXCEL对象(单元格,工作表,工作薄)
121、如何实现求平均值时只对不等于零的数求均值? average(if(a1:a5>0,a1:a5)) 122、D1输入姓名,A列中相同的姓名按设定和条件格式显示 =find(D1,$A$1) 123、excel中插入/名称/指定(应用)(标志)的用途是什么? 1、指定的用法 例如:在A1:A3中输入了AAA,BBB,CCC
选中A1:D3》插入》名称》指定》最左列》确定 这样就一次性定义了3个名称 AAA=B1:D1 BBB=B2:D2 CCC=B3:C3 2、应用的用法 在A4输入 =sum(B1:D1,B3:D3) 然后 插入》名称》应用 会将公式中的引用用相应的名称替换。 124、请教如何筛选出特殊颜色的数据。 定义名称.X=GET.CELL(24,单元格),辅助列=X 按辅助列筛选 125、如何快速查看名称 插入---名称---粘贴---名称清单(粘贴列表) 126、COUNTIF函数的16种公式设置
1、返加包含值12的单元格数量 =COUNTIF(DATA,12) 2、返回包含负值的单元格数量 =COUNTIF(DATA,"<0") 3、返回不等于0的单元格数量 =COUNTIF(DATA,"<>0") 4、返回大于5的单元格数量 =COUNTIF(DATA,">5") 5、返回等于单元格A1中内容的单元格数量 =COUNTIF(DATA,A1) 6、返回大于单元格A1中内容的单元格数量 =COUNTIF(DATA,“>”&A1) 7、返回包含文本内容的单元格数量 =COUNTIF(DATA,“*”)
8、返回包含三个字符内容的单元格数量 =COUNITF(DATA,“???”) 9、返回包含单词"GOOD"(不分大小写)内容的单元格数量 =COUNTIF(DATA,“GOOD”) 10、返回在文本中任何位置包含单词"GOOD"字符内容的单元格数量 =COUNTIF(DATA,“*GOOD*”) 11、返回包含以单词"AB"(不分大小写)开头内容的单元格数量 =COUNTIF(DATA,“AB*”) 12、返回包含当前日期的单元格数量 =COUNTIF(DATA,TODAY()) 13、返回大于平均值的单元格数量 =COUNTIF(DATA,">"&AVERAGE(DATA)) 14、返回平均值上面超过三个标准误差的值的单元格数量 =COUNTIF(DATA,“>"&AVERAGE(DATA)+STDEV(DATA)*3) 15、返回包含值为或-3的单元格数量
=COUNTIF(DATA,3)+COUNIF(DATA,-3) 16、返回包含值;逻辑值为TRUE的单元格数量 =COUNTIF(DATA,TRUE) 127、日期分列 如有一列格式如2005-7-8的数据,要将其分为2005 8 7,方法为:数据_分列,-号作分隔符,列数据格式-文本,再将年份转为数值。 128、查询时查不到数据的原因 可能是格式不一致。 129、120,000显示为12.0 自定义格式: #!.0, 130、121,999显示为12.2 #!.#,
131、大写的零,就是那个大的圈圈如何输入 1、在特殊格式中,中文小写是可以显示“○”的。 1、 ABC和紫光拼音输入法下,输入字母i(小写)和0就会显示大写的“○”,入如果是输入年份也可以用字母o代替(大写)。
3、如果用 智能ABC 输入法,按V,再按1,再按=,选择. 132、计算两个日期之间的天数 =DATEDIF(起始日期,结束日期,"D") http://club.excelhome.net/dispbb ... ID=86150&page=1 133、对于一些不可打印的字符(在Excel显示中类似空格),直接用替换方法不容易去掉。 可以这么做: =SUBSTITUTE(CLEAN(A1)," ","") 134、123 0123 75223 比如说上述的数字,我想在它们前面加上38910104,而且位置短的数字,会自动补0 变成如下: 3891010400123 3891010400123 3891010475223)
=TEXT(A1,"3891010400000") 135、VLOOKUP查找函数,不如用INDEX和MATCH函数查找,特别对于大型工作表,VLOOKUP函数的公式看起来短一些,但是由于它是查找函数,每执行1次,它就要搜索它的第2个参数区域,速度慢. 而用INDEX和MATCH函数速度明显比VLOOKUP快. 136、如果在Sheet1中A 列的单元格中数据的部分字符包含在Sheet2的A列中,则提取Sheet2对应的B列数据到Sheet1的B列中。否则显示空白。 =IF(COUNTIF(Sheet2!A:A,"*"&A1&"*"),VLOOKUP("*"&A1&"*",Sheet2!A:B,2,0),"") 137、find函数 =if(iserr(find("某某",A1)),"没找到","找到") 138、我有一列数据,比如A1:A100,现在我想这样计算,我想在B1单元格求和,但是要是变量,比如我在C1单元格中输入数据5,那么B1求出的结果就是A1:A5,如果我在C1单元格中输入数据10,那么B1求出的结果就是A1:A10,请问怎么实现求和的范围随C1变化 B1=SUM(INDIRECT("A1:A"&C1)) http://www.officefans.net/cdb/viewthread.php?tid=41319 139、图片批注 右击带批注的单元格》编辑批注》在批注边框上右击》设置批注格式》颜色与线条》单击“颜色”》填充效果》图片》选择图片. 140、if函数的另类用法
=IF(OR(VALUE(RIGHT(A1,2))={11,12,13}),"包含","不包含")
141、在一年中,显示是第几天用什么函数呢? =a1-date(year(a1),1,0) 将单元格格式设置为常规 142、虚线的分页线,表示电脑默认的打印范围,实线的分页线,则表示经过调整的分页线。 143、作为文本输入到单元格上的数字可以用于某些计算,但不是全部。Excel不会在一些函数如SUM、MAX中计算文本数字,但其他引用某一包含文本数字的单元格公式(如=A23+A24)就可以正确地计算。 144、如何用公式求出最大值所在的行? 如A1:A10中有10个数,怎么求出最大的数在哪个单元格? =MATCH(LARGE(A1:A10,1),A1:A10,0) =ADDRESS(MATCH(SMALL(A1:A10,COUNTA(A1:A10)),A1:A10,0),1) =ADDRESS(MATCH(MAX(A1:A10,1),A1:A10,0),1) 145、返回最末行位置 1、如果能确定某一行的数据到达数据区的最后一行: 能确定某列数据间不会有空格,使用counta对该列计数; 不能确定某列数据间会不会有空格,使用lookup找最后单元格行号;
2、什么都不能确定,使用数组公式max((a1:j5<>"")*row(a1:j5)) 146、如何统计成绩大于600且班级是5班的学生人数 "=sum((a2:a100=5)*(j2:j100>600))",不包括引号,然后同时按住shift和ctrl再按enter键。 http://club.excelhome.net/dispbb ... D=110287&page=2 147、如何让工作表奇数行背景是红色偶数行背景是蓝色? 用条件格式 =ROW()/2=INT(ROW()/2)设定颜色 条件格式: 公式为 =MOD(ROW(),2)=0 148、sum(a1:b5)等于sum(offset(a1,,,5,2)) sum(INDIRECT("A"& C1 & ":B" & C2)) 149、自己试一下下面两种好方法 第一种方法: 将鼠标指向单元格当出現黑十字时,按住鼠标右键然后下拉(或其它任意方向),放开鼠标右键出现一个选择框。 第二种方法:
选择单元格,将鼠标指向单元格的边当出現四个箭头时,按住鼠标右键拖放到任意单元格,放开鼠标右键出现一个选择框. 150、A1:A10数字显为文本格式时,如何求和 =SUMPRODUCT(A1:A10
Part 4: 一天一个小技巧
返回首页
<从Word表格文本中引入数据> 请问可以将Word表格的文本内容引入到Excel工作表中吗?具体如何实现? 答:可以通过“选择性粘贴”命令来实现。具体操作如下:先利用“复制”命令将Word表格文本内容添加到系统剪贴板中,然后在Excel工作表中定位到对应位置。单击“编辑”菜单中的“选择性粘贴”命令,再选择“方式”下的“文本”项,最后单击“确定”按钮即可。
快速实现整块数据的移动 在工作中常常需要移动单元格中的数据,请问有比“粘贴”操作更快捷的方法吗? 答:可以直接采用拖动的方法。操作过程如下:首先选择要移动的数据(注意必须是连续的区域)。然后移动鼠标到边框处,当鼠标指针变成一个四个箭头标志时,按住“Shift”键的同时按下鼠标左键,拖动鼠标至要移动的目的区域(可以从鼠标指针右下方的黄色提示框中获知是否到达目标位置),放开鼠标左键即完成移动。
固定数据输入时的焦点 在数据输入时,每当我们按下“Enter”键后,光标就会自动跳转到下一个单元格中。因此在进行数据的反复验证中,就必须反复地来重新定位焦点。请问有什么方法来固定数据输入的焦点吗? 答:要实现上述要求并不难。输入数据前,在按住“Ctrl”键的同时单击选择该单元格。当单元格边框的边很细的时候,再开始数据的输入。这样不管按下多少次“Enter”键,光标始终都不会移动到其他单元格。如果要移动到下一单元格,可以使用方向键来完成。 当然如果当前工作表中要实行数据验证的单元格很多时,每次都按上述方法来操作未免有些麻烦。那么可以试试以下方法来实现一劳永逸。单击“工具”菜单中的“选项”命令,在弹出的设置框中单击“编辑”选项卡,然后取消选择“按Enter键后移动”复选框,最后单击“确定”按钮即可。
[原创]为Excel中的“中文”添加拼音 由于工作的需要,经常要为中文添加拼音,这样可以为某些生僻的汉字加上拼音注释。如果是在Word中就比较简单了,但在Excel中应该怎么添加呢? 答:如果要在Excel中为“中文”添加拼音,可以执行如下的操作步骤(下面以Excel 2003为例进行介绍): (1)选中需要输入拼音的单元格区域,执行菜单栏中的【格式】|【拼音指南】|【显示或隐藏】命令(如图1所示),这样就可以为该单元格区域激活拼音信息的显示模式,否则即使输入后也处于隐藏状态。 (2)输入正常的中文文字,然后执行菜单栏中的【格式】|【拼音指南】|【编辑】命令,此时就可以直接在单元格的上半部区域输入相应的拼音了,如图2所示。 (3)一般情况下,由于拼音缺省使用半角字符,而且又缺省使用左对齐模式,因此看起来不是那么美观。
因此可以执行菜单栏中的【格式】|【拼音指南】|【设置】命令,在打开的“拼音属性”对话框中的“字体”选项卡中可以调整拼音的字体、字形、字号、下划线、颜色等格式(如图3所示);在“设置”选项卡中重新设置拼音与文字的对齐状态,比如左对齐、居中、分散对齐等(如图4所示),建议选择“分散对齐”,这样拼音与文字就可以一一对应了。
[分享]输入以“0”开头的数字 在Excel单元格中,输入一个以“0”开头的数据后,往往在显示时会自动把“0”消除掉。请问有什么办法来让“0”不被消掉吗? 答:要保留数字开头的“0”,其实是非常简单的。只要在输入数据前先输入一个“‘ ”(单引号),这样跟在后面的以“0”开头的数字的“0”就不会被系统自动消除。
我有更好的办法,就是设置单元格格式为自定义“000000#“,0的个数依编码长度定,这样可以进行数值运算。 如果这带0开头的字串本身是文本,或者是不定长的,那干脆先设该部分单元格格式为文本好了。 不知那位还有补充?
[分享]在数据录入时自动切换输入法 由于工作表中数据类型的复杂和多变性,所以常常要在各种输入法之间来回切换,请问可以实现一定位到某个单元格系统就会自动切换到相应的输入法吗? 答:可以通过下面的设置来实现它:首先选中使用同一种输入法的所有单元格,再单击执行“数据”菜单上的“有效性”命令,在弹出的对话框中选择“输入法模式”选项卡,在“输入法模式”下拉列表中,根据需要进行设置。如要使用中文字符的话,就选择“打开”,如要使用英文输入模式,就选择“关闭(英文模式)”。
[分享]在信息输入前就给予提示 在单元格输入信息时,希望系统能自动的给予一些必要的提示,这样不但可以减少信息输入的错误,还可
以减少修改所花费的时间。请问该如何实现? 答:可以按如下操作:首先选择需要给予输入提示信息的所有单元格。然后执行“数据”菜单中的“有效性”命令,在弹出的对话框中选择“输入信息”选项卡。接着在“标题”和“输入信息”文本框中输入提示信息的标题和内容即可。
[分享]选择大范围的单元格区域 由于屏幕大小的局限性,如果利用鼠标拖动操作,总是无法一次性准确地选择大于屏幕显示范围的单元格区域。请问有什么别的好方法吗? 答:可以进行如下操作:首先在“名称”框中输入该操作区域的起始单元格名称代号,然后输入该操作区域的最后一个单元格名称代号,中间用“:”冒号分开。最后按下“Enter”键,这样以这两个单元格为对角的长方形区域就会被快速的选定。
还有个办法: 先选中区域的左上角单元格,按着shift键点击右下角单元格,也可以选定以这两个单元格为对角的长方形区域。
如何正确显示百分数 在单元格中输入一个百分数(如60%),按下回车键后显示的却是0.6。请问该如何设置才能正确显示百分数? 答:出现这种情况的原因是因为所输入单元格的数据被强制定义成数值类型了,只要更改其类型为“常规”或“百分数”即可。操作如下:选择该单元格,然后单击“格式”菜单中的“单元格”命令,在弹出的对话框中选择“数字”选项卡,再在“分类”栏中把其类型改为上述类型中的一种即可。
[分享]在连续单元格中自动输入等比数据序列 请问有什么好的方法来输入一个较大的等比序列吗? 答:可以通过填充的方法来实现。具体操作如下:首先在第一个单元格中输入该序列的起始值,然后通过拖动操作选择要填充的所有单元格。再依次单击“编辑”菜单中的“填充”项下的“序列”命令。在弹出的“序列”对话框中,再选择“类型”中“等比序列”单选按钮,再在“步长”文本框中输入等比序列的比值。最后还要在“终止值”文本框中输入一个数字。不一定要是该序列的最后一个值,只要是一个比最后一个数大的数字就可以了。然后单击“确定”按钮即可。这样系统就自动将序列按照要求填充完毕。
[分享]为修改后的工作表添加批注 想在对工作表文档进行修改的同时,在修改处添加批注,以方便日后查阅。请问该如何操作? 答:为修改添加批注是很容易实现的。 具体操作如下:首先选择已经修改过的单元格,然后单击“插入”菜单中的“插入批注”命令。这时在该单元格旁边会弹出一个黄色的文本输入框,输入框最上边会自动显示系统安装时使用的用户名字,当然也可以改为当前使用者的名字。在光标处就可以输入要添加的批注了。输入完成后鼠标单击任
意位置,批注文本框就会自动隐藏起来。这时在该单元格的右上角部位会多出一个红色的小三角形符号,当鼠标移动至该单元格上时,会自动弹出刚才添加的批注内容。同时还可以用鼠标右键单击该单元格,在弹出的菜单中通过“编辑批注”和“清除批注”命令来进行其他的修改操作。
[分享]兼得Excel公式与结果 兼得Excel公式与结果 -----偶然间在网上找到的,不知道对大家有没有用。。。。。 Excel 最重要的应用就是利用公式进行计算。无论输入是纯粹的数字运算,还是引用其他单元格计算,只要在一个单元格中输入公式,就能得到结果。这个直接显示结果的设计对于绝大多数场合来说都是适用的,但某些情况下就不那么让人满意了。比如说在做工程施工的预结算编写,使用Excel,既要写出工程量的计算式,也要看到它的结果,于是这样相同的公式在Excel里面要填两次,一次在文本格式的单元格中输入公式,一次是在数据格式的单元格中输入公式让Excel计算结果。 如何既能看到公式又能看到结果呢?这个问题笔者认为可以从两个方面考虑:一种方法是所谓“已知结果,显示公式”,先在数据格式单元格中输入公式让Excel计算结果,然后在相邻的单元格中看到公式;另一种方法所谓“已知公式,显示结果”,就是先在一个文本格式的单元格中输入公式,在相邻的单元格中看到结果。 ★已知结果,显示公式 假设C列为通过公式计算得到的结果(假设C1为“=A1+B1”,或者直接是数字运算“=2+3”),而相邻的D列是你需要显示公式的地方(即D1应该显示为“=A1+B1”或者“=2+3”)。 1. 打开“工具”菜单选择“选项”命令,出现“选项”对话框。 2. 在“常规”选项卡中,选中“R1C1引用方式”选项。 3. 定义名称,将“引用位置”由“=GET.CELL(6,Sheet1!RC[-1])”即可。这里的RC[-1]含义是如果在当前单元格的同行前一列单元格中有公式结果,则在当前单元格中得到公式内容,即在含公式结果单元格的同行后一列单元格显示公式内容;如果将RC[-1]改为RC[1],则在公式结果的同行前一列单元格显示公式内容。 4. 如果“引用位置”中含有“RC[-1]”,则在含公式结果单元格的同行后一列单元格中输入“=FormulaofResult(这个应该就是前面提到的定义的名称吧?)”即可得到公式;如果“引用位置”中含有“RC[1]”,则在含公式结果单元格的同行前一列单元格中输入“=FormulaofResult”即可得到公式。 如果想要在含公式结果单元格的同行后数第2列中显示公式内容,则需要把“引用位置”中的“RC -1 ”改为“RC -2 ”。 ★已知公式,显示结果 假设C列为输入的没有等号公式(假设C1为“A1+B1”),而相邻的D列是你需要存放公式计算结果的地方(即D1显示A1和B1单元格相加的结果)。
1. 选中D1,然后打开“插入”菜单选择“名称”命令中的“定义”子命令,出现“定义名称”对话框。 2. 在“在当前工作表中的名称”输入栏中输入定义的名称“ResultofFomula”,在下方的“引用位置”编辑栏中输入“=EVALUATE(Sheet1!C1)”,单击[确认]按钮退出。 3. 在 D1中输入“=ResultofFomula”,然后选中按住右下角的填充柄向下拉动填充即可。 EVALUATE  是Eexcel 4.0版的宏表函数,Excel 2000和Excel 2002中还支持,但只可用于名称定义中。 4. 填充后要按[F9]进行重算,如果C列的公式有改动,也需要及时按[F9]进行重算。 巧施妙计,就能让公式和结果在Excel中和平共处了,你也试试吧。
[分享]同时对多个单元格执行相同运算 请问有什么好的方法来实现一步完成对多个单元格数据执行同样的运算吗? 答:可以执行如下操作:假设要对多个单元格执行全部加“1”的相同操作。首先在空白单元格中输入要执行运算的操作数“1”,再利用“复制”按钮将其添加到剪贴板。然后选择所有要进行运算的单元格,再单击“编辑”菜单中的“选择性粘贴”命令。在弹出的对话框中单击选择“运算”选项区域下的“加”单选按钮,最后单击“确定”按钮完成。
[分享]在公式中引用其他工作表单元格数据 公式中一般可以用单元格符号来引用单元格的内容,但是都是在同一个工作表中操作的。如果要在当前工作表公式中引用别的工作表中的单元格,那该如何实现呢? 答:要引用其他工作表的单元格可以使用以下方法格式来表示:工作表名称+“!”+单元格名称。如要将Sheet1工作表中的A1单元格的数据和Sheet2工作表中的B1单元格的数据相加,可以表示为:“Sheet1!A1+Sheet2!B1”。
[分享]不输入公式直接查看结果 当要计算工作表中的数据时,一般都是利用公式或函数来得到结果。可是假如仅仅只是想查看一下结果,并不需要在单元格中建立记录数据。请问有什么办法实现吗? 答:可以选择要计算结果的所有单元格,然后看看编辑窗口最下方的状态栏上,是不是自动显示了“求和=?”的字样呢?如果还想查看其他的运算结果,只需移动鼠标指针到状态栏任意区域,然后用鼠标右键单击,在弹出的菜单中单击要进行相应的运算操作命令,在状态栏就会显示相应的计算结果。这些操作包括:均值、计数、计数值、求和等。
[分享]利用单步执行检查公式错误 Excel中提供的函数是十分丰富的。但是在使用一些比较复制的嵌套函数时,一旦出现错误,要找到错误原因是比较困难的。请问有什么好的方法来查找公式函数中的错误吗? 答:可以利用“公式求值”功能来一步一步执行函数,这是一个准确找出错误的好办法。由于“公式求值”
不是系统默认的按钮,所以需要先将其添加到工具栏。单击“工具”菜单中的“自定义”命令,在弹出的对话框中的选择“命令”选项卡。再在“类别”列表中选择“工具”项,在“命令”列表中选择“公式求值”项,最后将其拖到工具栏上。接下来选择包含函数的单元格,然后单击“公式求值”按钮。在弹出的“公式求值”对话框中,会用下划线表示公式中的执行步骤。通过单击“求值”按钮,可以一步步地执行公式,同时观察下划线表达式的运算结果是否正确,从而找出公式的错误之处。
[分享]函数中快速引用单元格 在函数使用时,常常需要用单元格名称来引用该单元格的数据。如果要引用的单元格太多、太散的话,那么逐个输入就会很麻烦。请问有什么简捷的方法吗? 答:遇到这种情况时,可以试试下面的方法,利用鼠标直接选取引用的单元格。 具体操作如下:以SUM函数为例。 我们在公式编辑栏中直接输入“=SUM()”,然后再将光标定位至小括号内。接着按住“Ctrl”键,在工作表中利用鼠标选择所有参与运算的单元格。这时会发现,所有被选择的单元格都自动的填入了函数中,并用“,”自动分隔开。输入完成后按“Enter”键结束即可。
[分享]快速找到所需函数的妙招 如果对系统提供的函数不是很熟悉,有什么办法可以快速找到需要的函数呢? 答:对于没学习过计算机编程的人来说,系统提供的函数的确是一个比较头痛的问题。不过使用下述方法可以非常容易地找到你需要的函数: 1)假如需要利用函数对工作表数据进行排序操作,可以先单击工具栏的“插入函数”按钮,在弹出的对话框的“搜索函数”项下面直接输入所要的函数功能,如直接输入“排序”两个字。 2)单击“转到”按钮,在下面的“选择函数”对话框中就会列出好几条用于排序的函数。单击某个函数,在对话框最下面就会显示该函数的具体功能。 3)如果觉得还不够详细,可以单击“有关该函数的帮助”链接来查看更详细的描述。这样就再也不会为不懂函数而头痛了。
[分享]利用组合键快速隐藏单元格中的公式 如果要隐藏单元格中的公式,除了用系统命令外,还有什么更快捷的方法吗? 答:可以利用以下组合键来隐藏公式。 选择要隐藏公式的单元格,然后按下“Ctrl+`”(数字“1”键左边的那个按键)组合键即可;如果要再次显示隐藏的公式,只要再按一次上述组合键即可重新恢复显示。
[分享]快速实现矩阵型数据区域的求和 在一个比较大的工作表中,需要对输入的数据进行横向和纵向的求和,请问有什么快捷的方法吗? 答:对于这种矩阵形状的数据进行行和列的求和,可以使用如下快捷的方法:如要对数据矩阵进行横向求和,首先用鼠标拖动操作选择整个数据矩阵,同时还要多选择一空白列。然后单击工具栏上的“Σ”按钮。这样会发现多选择的那一个空白列中已经自动填入了对应行求和得到的结果了。同样,如果要按列方向求和,则只要多选择一行;如果要同时对行和列进行求和,就多选择一行和一列,最后单击“Σ”按钮即可。不过用这种方法来求和时,必须保证所有的单元格都是直接输入的数据,不能是通过函数式计算得到的数
据。否则在该单元格前的所有单元格数据都不会参与求和。
[分享]在工具按钮之间设置分隔线 工具栏中只有不同组的工具按钮才用分隔线来隔开,如果要在每一个工具按钮之间设置分隔线该怎么操作? 答:先按住“Alt”键,然后单击并稍稍往右拖动该工具按钮,松开后在两个工具按钮之间就多了一根分隔线了。如果要取消分隔线,只要向左方向稍稍拖动工具按钮即可。
[分享]依据三个以上关键字对数据排序 系统提供的排序功能最多只能同时依据三个关键字来进行。如果需要依据三个以上的条件来排序,该如何实现? 答:虽然系统一次最多只能同时对三个关键字来排序,但是我们可以利用设置排序关键字的优先级,通过多次排序来实现关键字大于3个以上的排序。 具体操作如下:首先打开工作表。单击“数据”菜单中的“排序”项,依次在“主要关键字”、“次要关键字”、“第三关键字”中选择优先级最低的几个排序关键字,然后执行排序操作。接下来再依次选择优先级较高的几个关键字,进行2次排序。这样直到最高优先级的关键字排序完成为止,就可以实现了对三个以上关键字的排序操作了。
[分享]同时打开相关联的所有工作簿 在数据输入或处理时,常常可能要参考其他数据文件中的内容,这样就必须一个一个的打开相关联的工作簿。请问可以让系统在打开当前工作簿文件时就自动打开这些相关联的数据文件吗? 答:可以通过将这些相关联的数据文件和当前工作簿组成一个工作区,只要将该工作区打开,系统就会打开其中的每一个工作簿。具体实现方法如下:首先打开所以的工作簿文件,再执行“文件”菜单中的“保存工作区”命令,输入工作区名称后单击“保存”按钮即可。
[分享]更改系统菜单的弹出方式 请问如何自己定义多样的菜单弹出方式呢? 答:其实系统早就准备了多种菜单的弹出方式,可以执行如下操作来实现:单击“工具”菜单中的“自定义”命令。再选择“选项”选项卡,在“菜单的打开方式”项旁的下拉列表框中列出了多种弹出方式,可以根据喜好来选择。
[分享]在工具按钮直接显示文字提示 工具栏中提供的工具按钮都是用图表或符号来表示的,有许多都看不懂,请问可以让工具按钮像菜单那样显示文字提示吗? 答:可以执行以下操作来实现:单击“工具”菜单中的“自定义”命令,再选择“命令”选项卡。然后用鼠标右键单击系统工具栏上希望显示文字提示的工具按钮(或者单击对话框中的“更改所选内容”按钮),在弹出的菜单中根据需要选择“总是只用文字”或者“图像和文本”。这样工具按钮就会显示文字提示了。不过并不是每个工具按钮都有文字提示的。所以有的工具按钮弹出菜单中的对应命令项会是不可用的。
[原创]在公式中插入批注
如果要在公式中插入批注信息,可以利用“N(Value)”返回“0”的特点,因为文字属于其它值。 1.假如A1~F1单元格中是个别统计数字,G1则是它们的总和,那么一般情况下其公式为“=SUM(A1:F1)”。 2.如果要在公式中插入批注信息,可以将公式更改为“=SUM(A1:F1)+N("A1~F1的总和")”,如图1所示。 图片附件: 图1.JPG (2005-7-12 13:18, 11.04 K)
Part 5: EXCEL技巧汇总
返回首页
[分享]利用"条件求和向导"对数据按条件进行汇总 在一个表格中经常需要将表中的数据按一定的条件进行求和计算。如一个人事职称档案表,需要统计"助理工程师"、"工程师"、"会计师"等职称的人数各为多少。对类似问题,利用"条件求和向导"便可很好地解决。具体方法是选择"工具"*"加载宏",在打开的窗口中选中"条件求和向导",然后按"确定"按钮,调用加载宏; 选择"工具"*"向导"*"条件求和",进入求和向导; 在求和向导中首先单击"输入"框右边的小按钮,然后在表格中直接选定包含数据的区域,再单击"下一步",在"求和列"中选定求和数据所在列,在"条件"框中添加求和的条件,根据向导的步骤指定存放汇总结果的单元格,即将光标置于输入框中,直接在表格中选中相应单元格即可,最后单击"完成"按钮。在汇总结果单元格中将出现预期的汇总结果,且一旦设定,汇总结果单元格会随着数据变化自动汇总,一劳永逸。要取消汇总结果只需点击汇总结果单元格,将公式去掉即可。当然,熟悉函数公式的用户,可直接定义单元格的公式,效果是一样的。
[分享]把Excel表格转换为图片 许多报纸和杂志都介绍过在Excel中,同时按住Shift键点击“文件”菜单,原来的“关闭”菜单项就会变成“全部关闭”。如果我们在按下Shift键的同时点击“编辑”菜单,原来的复制和粘贴就会变成“复制图片”和“粘贴图片”。利用这一功能,我们可以将一个数据表以图片的形式进行复制,从而将其转换为图片。方法如下: 首先选中需要复制成图片的单元格区域,然后按住Shift键依次选择“编辑→复制图片”命令,接着弹出“复制图片”窗口,选择“图片”单选项后点击“确定”按钮,这时就将选定的表格区域复制成图片了。最后复制到目标只需直接选择“粘贴”命令即可(或者按Shift键再选择“编辑→粘贴图片”命令)。我们还可以将其在Word中进行粘贴。 另外,在复制图片时如果选择了“如打印效果”单选项,在粘贴的时候如果表格没有边框,复制后的图片也不会出现边框。
[分享]将Excel的文本数字转换成数字 在Excel中,系统将前面带有半角单引号的数字视为文本对待,而且为了某些需要,用户可以通过“格式”菜单中的“单元格”命令,将数字设置为文本格式。然而,现在我们却需要把工作表中文本格式的数字转换成数字,那么以下方法可以一试。 1.一次转换一个单元格 在“工具”菜单上,单击“选项”,再单击“错误检查”选项卡(一定要确保选中了“允许后台错误检查”和“数字以文本形式存储”复选框)。选中任何在左上角有绿色错误指示符的单元格。在单元格旁边,单击出现的按钮,再单击“转换为数字”。 2.一次转换整个区域
在某空白单元格中,输入数字“1”。选中该单元格,并在“编辑”菜单上单击“复制”命令。选取需转换的存储为文本数字的单元格区域。在“编辑”菜单上,单击“选择性粘贴”。在“运算”下,单击“乘”。单击“确定”按钮。 3.处理特殊财务数字 一些财务程序显示负值时在该值右边带有负号“-”。要将此文本字符串转换为数值,必须返回除最右边字符(即负号)以外的所有文本字符串字符,然后乘以“-1”。例如,如果单元格A2中的值为“156-”,那么公式“=LEFT(A2,LEN(A2)-1)*-1”将文本转换为数值“-156”,然后用上面的方法操作。
[分享]快速隐藏单元格所在位置的行与列 1. 按ctrl+9 可隐藏选中单元格或区域所在的行 2. 按ctrl+0 可隐藏选中单元格或区域所在的列 赫赫野兔: 恢复隐藏的行和列的快捷键是: ctrl+shift+0 ctrl+shift+9
还有 隐藏当前工作表 格式----工作表----隐藏 隐藏当前工作薄 窗口----隐藏
[分享]快速选择Excel工作表 在Excel中,要在一个有很多个工作表的工作簿中快速的选择某一个工作表,只需将鼠标指针移到工作薄左下角的工作表滚动轴(Sheet Tabs),然后点击右键,在快捷菜单中选择你想要的工作表。
[推荐]用Excel和VBA轻松实现桌签批量打印 用Excel和VBA轻松实现桌签批量打印, 工作中有需要的朋友可以试一下
用Excel来制作桌面标签(以下简称桌签)确实是一个比较新颖的方法,不过要是同时制作很多桌签也还是比较费时的。那么今天笔者就介绍一种用VBA轻松实现桌签批量打印的方法。
一、 准备工作 ⒈启动Excel2003(其他单元格也可以),执行“工具→自定义”命令,打开“自定义”对话框。在“命令”标签中,选中“类别”下面的“工具”选项,然后在“命令”下面找到“照相机”选项,并将它拖到工具栏合适位置上。
⒉在Sheet1工作表中(最好将文档取名保存一下),仿照图1的样式,在B列相应的单元格中输入需要打印桌签的名称,并在A1中输入一个名称。
图1
⒊在C1单元格(也可以是其他单元格)中输入公式:=COUNTA(B:B),用于统计所要打印的桌签数目。
⒋选中A1单元格,设置字符居中对齐,并设置一种适合用作桌签的字体(如魏碑体)。
二、 制作桌签 ⒈选中A1单元格,单击一下工具栏上的“照相机”按钮,再切换到“Sheet2”工作表中,单击一下鼠标,即可得到一张A1单元格的照片(图2)。 图2
小贴士:这种照片不同于普通图片,它与A1单元格中的数据建立了链接,随A1单元格中的字符改变而改变。
⒉选中“照片”,执行“格式→图片”命令,打开“设置图片格式”对话框,在“颜色与线条”标签中,将“线条”设置为“无线条颜色”,点击“确定”返回。
⒊根据桌签底座的尺寸,将“照片”调整至合适大小,并将它定位到页面合适位置上。
⒋将上述“照片”复制一份,在“设置图片格式”对话框的“大小”标签中,将它“旋转→180°”,并将它定位到页面合适位置上(效果参见图2)。
三、 编制宏程序 ⒈按下“Alt+F11”组合键,打开“Visual Basic编辑器”(图3),在右侧的“工程资源管理器”区域中,选中“VBAProject(桌签.xls)”选项,执行“插入→模块”命令,插入一个模块(模块1)。 图4
⒉双击“模块1”,展开右侧的代码编辑区,将下述代码输入其中:
Sub 桌签() '建立一个名称为“桌签”的宏。
For i = 1 To Sheet1.Cells(1, 3) '设立一个循环:开始值为1,结束值为Sheet1工作表C3单元格内的值(即桌签数目)。
Sheet1.Select '选中Sheet1工作表。
Cells(1, 1).Value = Cells(i, 2).Value '依次将B列的桌签字符调入A1单元格中。
Columns("A:A").Select '选中A列。
Selection.Columns.AutoFit '将A列设置为“最合适的列宽”,这样让字符不同的桌签自动适应“照片”的大小。
Sheet2.Select '选中Sheet2工作表。
ActiveWindow.SelectedSheets.PrintOut'执行一下打印操作,打印出一张桌签。
Next '进入下一个循环。
Sheet1.Select '桌签全部打印完成后,选中Sheet1工作表。
Range("B1").Select '选中B1单元格,等待下一次修改字符。
ActiveWorkbook.Save '保存当前工作簿文档。
Application.Quit '退出Excel。
End Sub '宏的结束符号。
小贴士:①上述代码中英文单引号及其后面的字符是对代码的注释,可以不输入。②宏的结束符号上面的4行代码不输入不影响桌签的打印。
⒊输入完成后,关闭“Visual Basic编辑器”窗口。
四、添加按钮 ⒈切换到Sheet1工作表中,执行“视图→工具栏→窗体”命令,展开“窗体”工具栏,单击工具栏上的“按钮”按钮,在工作表中拖拉出一个按钮,此时系统弹出“指定宏”对话框(图4),选中刚才编制的“桌签”宏,确定返回。
图5
2.将按钮上的文字修改为“打印桌签”,再调整好大小,并定位在工作表合适位置上(参见图1)。
以后需要打印桌签时,只要将相应的字符输入到B列下面的单元格中,然后按下“打印桌签”按钮,就一切OK了。
用VBA实现用户口令及授权管理(源代码公开) 用VBA实现用户口令及授权管理 本人是一个VBA初学者¸初次发表自己首个VBA程序, 希望版主及各位前辈给予鼓励, 对予程序中的不足, 希望各位前辈给我改进意见, 用户及口令都为”111” 工程口令已清除 主要功能: 1. 如果用户取消宏, 他就不会看到程序内主表, 在工作表- 隐藏中也取消不了(当然这只能对不懂VBA的用户适用) 2. 系统要求用户定期更改密码 3. 可对不同用户进行不同的授权(在用户表中,Y: 有权; N: 无权 4. 退出系统自动保存 5. 对密码表中的口令加密(希望高手提供更强大的加密算法)
===
Public Function EncodePassword(pw As String) As String
' 传递pw,并返回编码后的pw。
Dim codedPW As String
Dim i As Integer
Dim ch As String * 1
If Len(pw) = 0 Then
EncodePassword = ""
Exit Function
End If
codedPW = ""
pw = Trim(pw)
For i = 1 To Len(pw)
ch = Mid(pw, i, 1)
'codedPW = codedPW & Chr(Asc(ch) + (Cos(i) * i + Sin(200 * i) * i + Log(100 + i * i))) & Chr(Asc(ch) + (Cos(i) * i + Sin(100 * i) * i + Log(50 + i * i)))
'codedPW = codedPW & Chr(Asc(ch) + (Cos(i) + Sin(200 * i))) & Chr(Asc(ch) + (Cos(i) + Sin(100 * i)))
codedPW = codedPW & Chr(Asc(ch) + (Cos(i) * i + Sin(200 * i) * i + Log(100 + i * i) - 1.5 * i)) & Chr(Asc(ch) + (Cos(i) * i + Sin(100 * i) * i + Log(50 + i * i) - 1.5 * i))
Next i
EncodePassword = codedPW
End Function
Public Function DecodePassword(codedPW As String) As String
' 传递编码后的pw,并返回解码的 pw.
Dim decodedPW As String
Dim i As Integer
Dim ch As String * 1
If Len(codedPW) = 0 Then
DecodePassword = ""
Exit Function
End If
decodedPW = ""
codedPW = Trim(codedPW)
For i = 1 To Len(codedPW)
ch = Mid(codedPW, i, 1)
If i Mod 2 = 1 Then
'decodedPW = decodedPW & Chr(Asc(ch) - (Cos((i + 1) / 2) * (i + 1) / 2 + Sin(200 * (i + 1) / 2) * (i + 1) / 2 + Log(100 + (i + 1) / 2 * (i + 1) / 2)))
'decodedPW = decodedPW & Chr(Asc(ch) - (Cos((i + 1) / 2) + Sin(200 * (i + 1) / 2)))
decodedPW = decodedPW & Chr(Asc(ch) - (Cos((i + 1) / 2) * (i + 1) / 2 + Sin(200 * (i + 1) / 2) * (i + 1) / 2 + Log(100 + (i + 1) / 2 * (i + 1) / 2) - (i + 1) / 2 * 1.5))
Else
decodedPW = decodedPW
End If
Next
DecodePassword = decodedPW
End Function
Sub Macro1()
'
' Macro1 Macro
' Wang Jinbo 记录的宏 2004-12-28
'
' 快捷键: Ctrl+z
'
'
' ActiveWorkbook.RefreshAll
' Userform1.Hide
Dim WP19 As Worksheet
Set WP19 = Sheets("WP1019")
Dim Summary As Worksheet
Set Summary = Sheets("Summary")
'Sheets("Summary").Select
'Cells.Select
'Summary.Range(A2, P9999).Select
'Selection.ClearContents
'Selection.Clear
Dim SourceRow As Integer
SourceRow = 2
Dim TargetRow As Integer
TargetRow = 2
Dim OPRow As Integer
OPRow = 2
Dim RevaluationRow As Integer
RevaluationRow = 2
Dim OP As Double
Dim Revaluation As Double
WP19.Activate
While Not IsEmpty(WP19.Cells(SourceRow, 1))
If WP19.Cells(SourceRow, 2) = 2 And WP19.Cells(SourceRow, 3) <> WP19.Cells(SourceRow - 1, 3) Then
Summary.Activate
Summary.Range(Cells(TargetRow, 1), Cells(TargetRow, 1)).Select
Summary.Cells(TargetRow, 1) = WP19.Cells(SourceRow, 3)
Summary.Range(Cells(TargetRow, 2), Cells(TargetRow, 2)).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],WP1002!C[-1]:C[1],3,FALSE)"
Summary.Range(Cells(TargetRow, 3), Cells(TargetRow, 3)).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],WP1002!C[-2]:C,2,FALSE)"
Summary.Range(Cells(TargetRow, 4), Cells(TargetRow, 4)).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],RS1002!C[-3]:C[-1],3,FALSE)"
Summary.Range(Cells(TargetRow, 5), Cells(TargetRow, 5)).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],WP1002!C[-4]:C,5,FALSE)"
Summary.Range(Cells(TargetRow, 6), Cells(TargetRow, 6)).Select
ActiveCell.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-5],OB!C[-5]:C,6,FALSE))=TRUE,0,VLOOKUP(RC[-5],OB!C[-5]:C,6,FALSE))"
Summary.Range(Cells(TargetRow, 7), Cells(TargetRow, 7)).Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('IN1012'!C[4]:C[5],Period!R2C2&""05""&RC[-6],'IN1012'!C[5])"
Summary.Range(Cells(TargetRow, 8), Cells(TargetRow, 8)).Select
ActiveCell.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(Period!R6C2&RC[-7]&""031"",WP1019!C[-2]:C[-1],2,FALSE))=TRUE,0,VLOOKUP(Period!R6C2&RC[-7]&""031"",WP1019!C[-2]:C[-1],2,FALSE)+ISNA(VLOOKUP(Period!R6C2&RC[-7]&""032"",WP1019!C[-2]:C[-1],2,FALSE))=TRUE,0,VLOOKUP(Period!R6C2&RC[-7]&""032"",WP1019!C[-2]:C[-1],2,FALSE)+ISNA(VLOOKUP(Period!R6C2&RC[-7]&""033"",WP1019!C[-2]:C[-1],2,FALSE))=TRUE,0,VLOOKUP(Period!R6C2&RC[-7]&""033"",WP1019!C[-2]:C[-1],2,FALSE)+ISNA(VLOOKUP(Period!R6C2&RC[-7]&""034"",WP1019!C[-2]:C[-1],2,FALSE))=TRUE,0,VLOOKUP(Period!R6C2&RC[-7]&""034"",WP1019!C[-2]:C[-1],2,FALSE)+ISNA(VLOOKUP(Period!R6C2&RC[-7]&""040"",WP1019!C[-2]:C[-1],2,FALSE))=TRUE,0,VLOOKUP(Period!R6C2&RC[-7]&""040"",WP1019!C[-2]:C[-1],2,FALSE))"
Summary.Range(Cells(TargetRow, 9), Cells(TargetRow, 9)).Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('IN1012'!C[2]:C[3],Period!R2C2&""06""&RC[-8],'IN1012'!C[3])"
Summary.Range(Cells(TargetRow, 10), Cells(TargetRow, 10)).Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('IN1012'!C[1]:C[2],Period!R2C2&""08""&RC[-9],'IN1012'!C[2])"
Summary.Range(Cells(TargetRow, 11), Cells(TargetRow, 11)).Select
ActiveCell.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-10],Variance!C[-9]:C[-7],2,FALSE))=TRUE,0,VLOOKUP(RC[-10],Variance!C[-9]:C[-7],2,FALSE))"
Summary.Range(Cells(TargetRow, 12), Cells(TargetRow, 12)).Select
Selection.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-11],Variance!C[-10]:C[-8],3,FALSE))=TRUE,0,VLOOKUP(RC[-11],Variance!C[-10]:C[-8],3,FALSE))"
Summary.Range(Cells(TargetRow, 13), Cells(TargetRow, 13)).Select
Selection.FormulaR1C1 = _
"=SUMIF('IN1012'!C[-2]:C[-1],Period!R2C2&""37""&RC[-12],'IN1012'!C[-1])"
Summary.Range(Cells(TargetRow, 14), Cells(TargetRow, 14)).Select
ActiveCell.FormulaR1C1 = _
"=RC[-8]-RC[-7]+RC[-6]-RC[-5]-RC[-4]-RC[-3]-RC[-2]-RC[-1]"
Summary.Range(Cells(TargetRow, 15), Cells(TargetRow, 15)).Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-10]=""6"",0,IF(SUM(RC[-8]:RC[-2])=0,RC[-9],IF(RC[-10]=""9"",0,VLOOKUP(Period!R6C2&RC[-14]&""090"",WP1019!C[-9]:C[-8],2,FALSE))))"
Summary.Range(Cells(TargetRow, 16), Cells(TargetRow, 16)).Select
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]"
Range("P2").Select
Calculate
Columns("P:P").Select
'OPRow = 2
'While Not IsEmpty(WP19.Cells(OPRow, 1))
' If WP19.Cells(OPRow, 2) = 2 And WP19.Cells(OPRow, 3) = WP19.Cells(SourceRow, 3) And WP19.Cells(OPRow, 8) = "081" Then
' Summary.Range(Cells(TargetRow, 6), Cells(TargetRow, 6)).Select
' Summary.Cells(TargetRow, 6) = WP19.Cells(OPRow, 9)
' End If
' OPRow = OPRow + 1
'Wend
TargetRow = TargetRow + 1
End If
SourceRow = SourceRow + 1
Wend
End Sub
========
不关EXCEL 如何关闭已打开的加载宏
Sub ttt() Dim inadd As AddIn For Each inadd In Application.AddIns inadd.Installed = False Next End Sub
[推荐]Excel 数组的使用 我一直对数组的用法不是很清楚, 今天见到一篇关于数组基础的文章, 觉得有必要推荐给数组新手学习参考.
数组就是单元的集合或是一组处理的值集合。可以写一个数组公式,即输入一个单个的公式,它执行多个输入的操作并产生多个结果——每个结果显示在一个单元中。数组公式可以看成是有多重数值的公式。与单值公式的不同之处在于它可以产生一个以上的结果。一个数组公式可以占用一个或多个单元。数组的元素可多达6500个。 7.12.1 了解数组 首先我们通过几个例子来说明数组是如何工作的。我们可以从图7-35中看
到,在“B”列中的数据为销售量,在“C”列中的数据是销售单价,要求计算出每种产品的销售额和总的销售金额,一般的做法是计算出每种产品的销售额,然后再计算出总的销售额。但是如果我们改用数组,就可以只键入一个公式来完成这些运算。 输入数组公式的步骤为: 选定要存入公式的单元格,在本例中我们选择“D4”单元格。输入公式
=SUM(B2:B4*C2:C4),但不要按下[Enter]键(输入公式的方法和输入普通的公式一样)。按下[Shift]+[Ctrl]+[Enter]键。我们就会看到在公式外面加上了一对大括号“{}”,如图 7-36所示。 在单元格“D”中的公式“=SUM(B2:B4*C2:C4)”, 表示“B2: B4”范围内的每一个单元格和“C2:C4”内相对应的单元格相乘,也就是把每个地区的销售量和销售单价相乘,相乘的结果共有3个数字,每个数字代表一个地区的销售额,而“SUM”函数将这些销售额相加,就得到了总的销售额。 下面我们再以使用数组计算3种产品的销售额为例,来说明如何产生多个计算结果。其操作过程如下: (1) 选择“D2:D4”单元格区域,该区域中的每个单元格保存的销售金额。如图7-37所示。 (2) 在“D2”单元格中输入公式“=B2:B4*C2:C4”(不按[Enter]键)按下[Shift]+[Ctrl]+[Enter]”键,我们就可以从图7-38中看到执行后的结果。同时我们可以看到“D2”到“D4”的格中都会出现用大括弧“{ }”框住的函数式,这表示“D2” 到“D4”被当作一个单元格来处理,所以不能对“D2”到“D4”中的任一格作任何单独处理,必须针对整个数组来处理。
7.12.2 使用数组常数 我们也可以在数组中使用常数值。这些值可以放在数组公式中使用区域引用的地方。要在数据公式中使用数组常数,直接将该值输入到公式中并将它们放在括号里。例如,在图7-39中,就使用了数组常数进行计算。 常数数组可以是一维的也可以是二维的。一维数组可以是垂直的也可以是水平的。在一维水平数组中的元素用逗号分开。下面是一个一维数组的例子。例如数组:{10,20,30,40,50}。在一维垂直数组中的元素用分号分开。在下面的例子是一个6×1的数组,{100;200;300;400;500;600}。
对于二维数组,用逗号将一行内的元素分开,用分号将各行分开。下一个例子是“4 ×4”的数组(由4行4列组成):{100,200,300,400;110, … … ;130,230,330,440}。 注意:不可以在数组公式中使用列出常数的方法列出单元引用、名称或公式。例如:{2*3,3*3,4*3}因为列出了多个公式,是不可用的。{A1,B1,C1}因为列出多个引用,也是不可用的。不过可以使用一个区域,例如{A1:C1}。 对于数组常量的内容,可由下列规则构成: 数组常量可以是数字、文字、逻辑值或错误值。 数组常量中的数字,也可以使用整数、小数或科学记数格式。
文字必须以双引号括住。 同一个数组常量中可以含有不同类型的值。 数组常量中的值必须是常量,不可以是公式。 数组常量不能含有货币符号、括号或百分比符号。 所输入的数组常量不得含有不同长度的行或列。 7.12.3 数组的编辑 数组包含数个单元格,这些单元格形成一个整体,所以,数组里的某一单元格不能单独编辑。在编辑数组前,必须先选取整个数组。 选取数组的步骤为: (1) 选取数组中的任一单元格。 (2) 在“编辑”菜单中选择“定位”命令或者按下[F5]键,出现一个“定位”对话框。按下“定位条件”按钮,出现一个定位条件对话框,如图7-40所示。 选择“当前数组”选项,最后按下“确定”按钮,就可以看到数组被选定了。 编辑数组的步骤为: 选定要编辑的数组,移到数据编辑栏上按[F2]键或单击左键,使代表数组的括号消失,之后就可以编辑公式了。编辑完成后,按下[Shift] +[Ctrl] + [Enter]键。 若要删除数组,其步骤为:选定要删除的数组,按[Ctrl]+[Delete]或选择编辑菜单中的“清除”命令。 7.12.4 数组的扩充 在公式或函数中使用数组常量时,其它运算对象或参数应该和第一个数组具有相同的维数。必要时,Microsoft Excel 会将运算对象扩展,以符合操作需要的维数。每一个运算对象的行数必须和含有最多行的运算对象的行数一样,而列数也必须和含有最多列数对象的列数一样。 例如: = SUM({1,2,3}+{4,5,6})内的第一个数组为1×3,得到的结果为1+4、2+5和3+6的和,也就是21。如果将公式写成 = SUM({1,2,3}+4}),则第二个数据并不是数组,而是一个数值,为了要和第一个数组相加,Excel 会自动将数值扩充成1 ×3 的数组。使用=SUM({1,2,3}+{4,4,4})做计算,得到的结果为1+4、2+4和3+4的和, 即18。
将数组公式输入单元格区域中时,所使用的维数应和这个公式计算所得数组维数相同。这样,Microsoft Excel 才能把计算所得的数组中的每一个数值放入数组区域的一个单元格内。 如果数组公式计算所得的数组比选定的数组区域还小,则 Microsoft Excel会将这个数组扩展,以便将它填入整个数组区域内。例如:={1,2;3,4}*2扩充后的公式就会变为={1,2;3,4}*{2,2;2,2},则相应的计算结果为“2,4,6,8”。再如:输入公式={1,2;3,4}*{2,3}扩充后的公式就会变为={1,2;3,4}*{2,3;2,3} ,则相应的计算结果为“2,6,6,12”。 如果 Microsoft Excel 将一个数组扩展到可以填入比该数组公式大的区域内,而没有扩大值可用的单元格内,这样就会出现#N/A错误值。例如:={1,2;3,4}={1,2,3} 扩充后的公式就会变为={1,2,#N/A;3,4,#N/A}*{1,2,#/A;1.2.#N/A} ,而相应的计算结果为“2,4,#N/A,4,6,#N/A”。 如果数组公式计算所得的数组比选定的数组区域还要大,则超过的值不会出现在工作表上。
EXCEL中的自动宏 如果想作一个在EXCEL工作薄打开时就自动执行的宏, 请将此宏的名称,取为auot_open, 如果在打开excel工作薄时不执行自动宏, 只须按信SHIFT键就可以了
为什么不用Workbook_Open呢?
[分享]如何将多个工作表一次设置成同样的页眉和页脚?如何才能一次打印多个工作表? 如果在一个Excel文件中含有多个工作表,如何将多个工作表一次设置成同样的页眉和页脚?如何才能一次打印多个工作表? 把鼠标移到工作表的名称处(若你没有特别设置的话,Excel自动设置的名称是“sheet1、sheet2、sheet3.......”),然后点右键,在弹出的菜单中选择“选择全部工作表”的菜单项,这时你的所有操作都是针对全部工作表了,不管是设置页眉和页脚还是打印你工作表。 当然,如果只选择其中几个工作表,你可用ctrl或shift与鼠标结合选择
如何在EXCEL中加入自定义函数 我是OFFICE菜鸟,请问各位大侠, 如何在EXCEL中把定义好的宏加入自定义函数中
要在一般模块中定义好了自然就是自定义函数…例如 Function abc () Msgbox “Hi!” End function 就有一个自定义函数abc啰
[分享]避开Excel的误差 微软的Excel软件在财务应用领域使用得非常广泛、被许多单位用来处理财务数据。笔者就是用Excel来为单位做工资表的,不过笔者在使用过程中发现,当用Excel进行复杂算术运算时,其计算出来的结果有时会与电子计算器的结果有些微小的差别,特别是在进行多项除法运算而留有余数的情况下,算术“误差”很容易产生,究其原因,就是Excel在除不尽的情况下,不会自动对数值进行四舍五入的操作。这在要求严格的财务报表上当然是不允许的,避开这种“误差”的途径有两种:
1. 利用Round函数对中间值四舍五入 Excel中Round函数的格式为:Round(数值,保留的小数位数),它的作用就是对指定数值进行四舍五入的操作并保留指定小数位数。比如Round(8.8888,2)的意思就是对8.8888的千分位进行四舍五入、结果就是8.89,当然为工作方便,此函数括号内的数值也可以是单元格地址或别的算术公式,每个中间值经过这样处理后得到的最终运算结果就和计算器算出来的一致了。 2. 正确设置Excel选项来避开“误差” 上述函数方法虽然方便,不过遇上大型Excel表格时,如果每个单元格都要设置这个函数,工作量未免太巨大,这时我们就可以进入Excel的[工具]→[菜单]→[选项]→[重新计算],在“工作簿选项”处勾选“以显示值为准”,上述Excel“误差”也可有效避免,而默认情况下这个小选项是没有被勾选的。
我遇过这样的问题,就差一分的误差,很烦人的.我是个财务工作者,要经常在表格中设置计算增值税的,比如说:B4=B2/1.17*0.05,这样的公式就会产生一分的偏差的.请问楼主,怎么解决????
方法1, 用round函数, B4=round(B2/1.17*0.05,2),如果不能满足你的要求, 请上传附件及详细说明
[分享]如何快速输入数据序列? 如果你需要输入诸如表格中的项目序号、日期序列等一些特殊的数据系列,千万别逐条输入,为何不让Excel自动填充呢?在第一个单元格内输入起始数据,在下一个单元格内输入第二个数据,选定这两个单元格,将光标指向单元格右下方的填充柄,沿着要填充的方向拖动填充柄,拖过的单元格中会自动按Excel内部规定的序列进行填充。如果能将自己经常要用到的某些有规律的数据(如办公室人员名单),定义成序列,以备日后自动填充,岂不一劳永逸!选择“工具”菜单中的“选项”命令,再选择“自定义序列”标签, 在输入框中输入新序列,注意在新序列各项2间要输入半角符号的逗号加以分隔(例如:张三,李四,王二……),单击“增加”按钮将输入的序列保存起来。
自定义序列还有个妙用,有时需要按一定的特殊顺序排序。可以将特殊顺序的文本自定义成序列,排序时按自定义序列就可以了。
[求助] 急用!请帮忙!VBA发邮件遇到的两个问题(大家继续努力) 我使用下列代码发邮件, 请问如何解决下面两个问题: 1. 一次发几十个邮件,如何让系统自动在发邮件时自动按outlook发邮件提示对话框的"是"按钮 2. 如果在发邮件时按outlook发邮件提示对话框的"否"按钮, 系统提示运行错误"287", 如何解决 Sub test() Application.ScreenUpdating = False Dim objOL As Object Dim itmNewMail As Object Set objOL = CreateObject("Outlook.Application") Set itmNewMail = objOL.CreateItem(olMailItem) With itmNewMail
.To = "ddd@sina.com" .Subject = "Mail Test" .Send End With Set objOL = Nothing Set itmNewMail = Nothing Application.ScreenUpdating = True End Sub
===
第二个不是问题 With itmNewMail .To = "ddd@sina.com" .Subject = "Mail Test" On Error Resume Next .Send On Error GoTo 0 End With
===
' Declare Windows' API functions Private Declare Function RegisterWindowMessage _ Lib "user32" Alias "RegisterWindowMessageA" _ (ByVal lpString As String) As Long Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As Any, _ ByVal lpWindowName As Any) As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Sub SomeProc() Dim wnd As Long Dim uClickYes As Long Dim Res As Long ' Register a message to send uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME") ' Find ClickYes Window by classname wnd = FindWindow("EXCLICKYES_WND", 0&)
' Send the message to Resume ClickYes Res = SendMessage(wnd, uClickYes, 1, 0) ' ... ' Do some Actions ''''' btn_sendmail_Click ‘干些事后再关掉 ' Send the message to Suspend ClickYes Res = SendMessage(wnd, uClickYes, 0, 0) End Sub 程控ClickYes
===
你好: 我想了一個方法,用 display 方法,再按 Ait + S 鍵傳送 Email 以下法在 Excel 2003 + Outlook 2003 測試成功 PS: 請在Excel 視窗下執行,若在 VBE 視窗執行會有問題 Public Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long Public Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Function WinProcA(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysTime As Long) As Long KillTimer 0, idEvent DoEvents Sleep 500 Application.SendKeys "%s" End Function Sub test() Application.ScreenUpdating = False Dim objOL As Object Dim itmNewMail As Object
Set objOL = CreateObject("Outlook.Application") Set itmNewMail = objOL.CreateItem(olMailItem) With itmNewMail .Subject = "chijanzen Mail Test" .To = "chijanzen@gmail.com" .display SetTimer 0, 0, 0, AddressOf WinProcA End With Set objOL = Nothing Set itmNewMail = Nothing Application.ScreenUpdating = True End Sub
[分享]只记得函数的名称,但记不清函数的参数了,怎么办? 如果你知道所要使用函数的名字,但又记不清它的所有参数格式,那么可以用键盘快捷键把参数粘贴到编辑栏内。 具体方法是:在编辑栏中输入一个等号其后接函数名,然后按 Ctr+ A键,Excel则自动进入“函数指南——步骤 2之2”。当使用易于记忆的名字且具有很长一串参数的函数时,上述方法显得特别有用。
[分享]只计算Excel公式的一部分 在Excel中当我们调试一个复杂的公式时可能需要知道公式某一部分的值,可以用以下的办法来获得:双击含有公式的单元格,选定公式中需要获得值的那部分公式,按“F9”键,Excel就会将被选定的部分替换成计算的结果,按“Ctrl+Z”可以恢复刚才的替换。如果选定的是整个公式的话,就可以看到最后的结果。 例如,有这样一条公式:(A1*B1+C1)/D1,选定公式中的A1*B1(假设A1和B1的值分别为12和8),按“F9”键,Excel就会将A1*B1这部分转换为96。这时,公式就变成了(96+C1)/D1。如果继续选定D1(假设D1的值为6),并按“F9”键,Excel会将公式转换为(A1*B1+C1)/6。 当你完成了公式的计算部分,想恢复成原来的公式, 按“Esc”即可。 在Excel中当我们调试一个复杂的公式时可能需要知道公式某一部分的值,可以用以下的办法来获得:双击含有公式的单元格,选定公式中需要获得值的那部分公式,按“F9”键,Excel就会将被选定的部分替换成计算的结果,按“Ctrl+Z”可以恢复刚才的替换。如果选定的是整个公式的话,就可以看到最后的结果。
[分享]如何不使显示或打印出来的表格中包含有0值? 通常情况下,我们不希望显示或打印出来的表格中包含有0值,而是将其内容置为空。例如,图1合计列中如果使用“=b2+c2+d2”公式,将有可能出现0值的情况,如何让0值不显示? 方法一;使用加上If函数判断值是否为0的公式,即: =if(b2+c2+d2=0,“”, b2+c2+d2) 方法二:选择“工具”\“选项”\“视窗”,在“窗口选项”中去掉“零值”选项。 方法三:使用自定义格式。 选中 E2:E5区域,选择“格式”\“单元格”\“数字”,从“分类”列表
框中选择“自定义”,在“格式”框中输入“G/通用格式;-G/通用格式;;”,按“确定”按钮即可。 方法四:将0替换成空 (选择单元格匹配) 方法五(根据5楼雨点):定义目标EXCEL表,在“条件格式”中将“单元格数值”等于“0”,在“格式”中将“颜色”设为“白色”,两次“确定”即可。定义表中的0值均为白色,打印时也不显示
还有一方法: 定义目标EXCEL表,在“条件格式”中将“单元格数值”等于“0”,在“格式”中将“颜色”设为“白色”,两次“确定”即可。定义表中的0值均为白色,打印时也不显示
[分享]Excel中“摄影”的妙用 在Excel中,如果需要在一个页面中反映另外一个页面的更改,我们一般用粘贴连接等方式来实现。但是,如果需要反映的内容比较多,特别是目标位置的格式编排也必须反映出来的时候,再使用连接数据的方式就行不通了。好在天无绝人之路,Excel早为我们准备了“照相机”,你只要把希望反映出来的那部分内容“照”下来,然后把“照片”粘贴到其他的页面即可。 1、准备“照相机” 1) 打开Excel的“工具”菜单,选择“自定义”对话框。 2) 单击“命令”选项卡,在“类别”中选择“工具”,在右边“命令”列表中找到“摄影”,并且将其拖到工具栏的任意位置。 2、给目标“拍照” 假设我们要让Sheet2中的部分内容自动出现在Sheet1中。 1) 拖动鼠标并且选择Sheet2中需要“拍照”的内容。 2) 用鼠标单击工具栏上准备好的“照相机”按钮,于是这个选定的区域就被“拍”了下来。 3、粘贴“照片” 1) 打开Sheet1工作表。 2) 在需要显示“照片”的位置上单击鼠标左键,被“拍摄”的“照片”就立即粘贴过来了。 在Sheet2中调整“照片”的各种格式,粘贴到Sheet1中的内容同步发生变化,而且因为插入的的确是一幅自动更新的图像文件,所以,“图片”工具栏对这个照片也是有效的哦!你可以按几个按钮试试,这个“照片还可以自由的旋转呢!怎么样?这个数码照相机还不错吧!
[分享]Excel XP的快速输入技巧 用Excel XP处理庞大的数据信息时,如果不注意讲究技巧和方法,很可能会花费很大的精力。因此如何巧用Excel XP,来快速输入信息就成为各个Excel XP用户非常关心的话题,介绍几则这方面的小技巧。 一、快速输入大量含小数点的数字 输入大量带有小数位的数字时,按照普通的输入方法,例如0.05这个数字,我们会原样输入到表格中,这样工作量会变大,输入效率会降低。其实,我们可以使用Excel XP中的小数点自动定位功能,让小数点自动定位,从而快速提高输入速度。 用鼠标依次单击“工具”/“选项”/“编辑”标签,在弹出的对话框中选中“自动设置小数点”复选框,然后在“位数”微调编辑框中键入需要显示在小数点右面的位数就可以了。以后我们再输入带有小数点的数字时,直接输入数字,而小数点将在回车键后自动进行定位。
例如,要在某单元格中键入0.06,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”。怎么样,简单吧? 二、快速录入文本文件中的内容 如果您需要将纯文本数据制作成Excel XP的工作表,那该怎么办呢?重新输入一遍,大概只有头脑有毛病的人才会这样做;将菜单上的数据一个个复制/粘贴到工作表中,也需花很多时间。其实只要在Excel XP中巧妙使用其中的文本文件导入功能,就可以大大减轻工作量。 依次用鼠标单击菜单“数据/获取外部数据/导入文本文件”,然后在导入文本会话窗口选择要导入的文本文件,再按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。 三、快速输入大量相同数据 如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个输入。 具体方法为:首先同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;其次输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。 四、快速进行中英文输入法切换 一张工作表常常会既包含有数字信息,又包含有文字信息,要录入这样一种工作表就需要我们不断地在中英文之间反复切换输入法,非常麻烦,为了方便操作,我们可以用以下方法实现自动切换: 首先用鼠标选中需要输入中文的单元格区域,然后在输入法菜单中选择一个合适的中文输入法;接着打开“有效性”对话框,选中“输入法模式”标签,在“模式”框中选择打开,单击“确定”按钮;然后再选中输入数字的单元格区域,在“有效数据”对话框中,单击“输入法模式”选项卡,在“模式”框中选择关闭(英文模式);最后单击“确定”按钮,这样用鼠标分别在刚才设定的两列中选中单元格,五笔和英文输入方式就可以相互切换了 五、快速删除工作表中空行 删除Excel XP工作表中的空行,一般是将空行都找出来,然后逐行删除,但这样做操作量非常大,很不方便。那么如何才能减轻删除工作表中空行的工作量呢?可以使用下面的操作方法来进行删除: 在打开的工作表中单击菜单栏中的“插入”菜单项,并从下拉菜单中选择“列”,从而插入一新的列X,在X列中顺序填入整数;然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部。删去所有空行中X列的数据,以X列重新排序,然后删去X列。按照这样的删除方法,无论工作表中包含多少空行,您就可以很快地删除了。 六、快速对不同单元格中字号进行调整 在编辑文件时常常需要将某一列的宽度固定,但由于该列各单元格中的字符数目不等,致使有的单元格中的内容不能完全显示在屏幕上,为了让这些单元格中的数据都显示在屏幕上,就不得不对这些单元格
重新定义较小的字号。如果依次对这些单元格中的字号调整的话,工作量将会变得很大。 其实,您可以采用下面的方法来减轻字号调整的工作量:首先新建或打开一个工作簿,并选中需要Excel XP根据单元格的宽度调整字号的单元格区域;其次单击用鼠标依次单击菜单栏中的“格式”/“单元格”/“对齐”标签,在“文本控制”下选中“缩小字体填充”复选框,并单击“确定”按钮;此后,当你在这些单元格中输入数据时,如果输入的数据长度超过了单元格的宽度,Excel XP能够自动缩小字符的大小把数据调整到与列宽一致,以使数据全部显示在单元格中。如果你对这些单元格的列宽进行了更改,则字符可自动增大或缩小字号,以适应新的单元格列宽,但是对这些单元格原设置的字体字号大小则保持不变。 七、快速输入多个重复数据 我们经常要输入大量重复的数据,如果依次输入,工作量无疑是巨大的。现在我们可以借助Excel XP的“宏”功能,来记录首次输入需要重复输入的数据的命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。 打开工作表,在工作表中选中要进行操作的单元格;接着再用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。 八、快速处理多个工作表 无论打开多少工作表,在某一时刻我们只能对一个工作表进行编辑,那么能够同时处理多个工作表么?您可采用以下方法:首先按住“Shift"键或“Ctrl"键并配以鼠标操作,在工作簿底部选择多个彼此相邻或不相邻的工作表标签,然后就可以对其实行多方面的批量处理了。 在选中的工作表标签上按右键弹出快捷菜单,进行插入和删除多个工作表的操作;然后在“文件”菜单中选择“页面设置……”,将选中的多个工作表设成相同的页面模式;再通过“编辑”菜单中的有关选项,在多个工作表范围内进行查找、替换、定位操作;通过“格式”菜单中的有关选项,将选中的多个工作表的行、列、单元格设成相同的样式以及进行一次性全部隐藏操作;接着在“工具”菜单中选择“选项……”,在弹出的菜单中选择“视窗”和“编辑”按钮,将选中的工作表设成相同的视窗样式和单元格编辑属性;最后选中上述工作表集合中任何一个工作表,并在其上完成我们所需要的表格,则其它工作表在相同的位置也同时生成了格式完全相同的表格.
[分享]双击功能使Excel如虎添翼 1、在工具栏右侧的空白处双击,快速打开“自定义”对话框。 2、在单元格中双击,单元格进入编辑状态。 3、在“格式刷”按钮上双击,格式刷可以反复多次使用。 [特别提示] 再次单击“格式刷”按钮,或者按Esc键,可以取消“格式刷”功能。 4、在标题栏上双击,Excel窗口由最大化(原始状态)还原到原始状态(最大化)大小。 5、选中某个单元格,并将鼠标移至该单元格的右下角成细十字线状时,双击鼠标,即可将该单元格中的内容快速填充到下面的单元格中。 [特别提示] 要实现此填充,该单元格左侧(或右侧)相邻列中必须有连续的数据。
6、如果工具条浮动在工作表区中,我们在工具条的标题栏上双击,该工具条返回工作表区上部或下部位置。 7、在窗口左上角Excel标志上双击,则退出Excel(如果当前文档没有保存,系统会提示保存)。 8、在工作表名称(Sheet1等)上双击,即可对工作表名称进行“重命名”。 9、将鼠标移至垂直滚动条上端与编辑区交界处成双向拖拉箭头状时,双击鼠标,即可将编辑区拆分为上、下两个窗口。此时,如果将鼠标移至两个窗口分界线上双击,即可撤销窗口的拆分。 10、将鼠标移至水平滚动条右端成双向拖拉箭头状时,双击鼠标,即可将编辑区拆分为左、右两个窗口。此时,如果将鼠标移至两个窗口分界线上双击,即可撤销窗口的拆分。 11、将鼠标移至列标与列标交界处成双向拖拉箭头状时,双击鼠标,即可快速将左侧1列设置为“最适合的列宽”。如果选中多列,然后执行此操作,即可将选中的多列设置为“最适合的列宽”。 12、将鼠标移至行标与行标交界处成双向拖拉箭头状时,双击鼠标,即可快速将上面1行设置为“最适合的行高”。如果选中多行,然后执行此操作,即可将选中的多行设置为“最适合的行高”。 13、在菜单上双击,即可将菜单中所有的菜单项(包括不常的菜单项)全部展开。 14、如果某列有多个连续的空白或有数据的单元格,选中最下(上)面一个单元格,然后将鼠标移至该单元格上(下)边缘处成梅花状时,双击鼠标,即可跳转到最上(下)面一个单元格中。 [特别提示] 如果下面全部是空白单元格,则向下跳转的操作无效。 15、如果某行有多个连续的空白或有数据的单元格,选中最右(左)边一个单元格,然后将鼠标移至该单元格左(右)边缘处成梅花状时,双击鼠标,即可跳转到最左(右)边一个单元格中。 [特别提示] 如果右边全部是空白单元格,则向右跳转的操作无效。 16、双击数据透视表中的数据, 可在新的工作表中列出该数据的明细
[分享]Excel中双击格式刷的妙用 Excel中格式刷的主要作用是复制某一单元格(或区域)的格式(字体、字号、行高、列宽等)应用于其他区域,可将上述单元格选中,单击格式刷来取出所在位置或所选内容的文字格式,用这个刷子去刷别的单元格可实现文字格式的复制。 但每次刷完后,格式刷就变成不可用了,如果希望重复复制格式,就要不停地重复上述过程。有一个方法可避免上述的繁琐步骤:通过双击格式刷,可以将选定格式复制到多个位置。若要关闭格式刷,则按下“Esc”键或再次单击格式刷即可(此方法同样适用于Word)。
Part 6: EXCEL基础知识技巧在线教程
返回首页
1.如何显示多行文本 一般情况下,在单元格中输入的文本是不换行的,这样看起来会很别扭。 如果要在同一单元格中显示多行文本,可以这样做:选中要换行的单元格,单击“格式”菜单,选择“单元格”命令,然后选择“对齐”选项卡,选中“文本控制”标题下的“自动换行”复选框。 如果单元格中还有段落,就要在里面输入硬回车,这时Enter键的功能不是在单元格内换行,而是在单元格间移动。这时我们可以在编辑栏(或正编辑的单元格)中要换行的地方单击鼠标,按 ALT+ENTER 键来换行。
2。如何改变回车键的功能? 一般情况下,我们在一个单元格中输入资料后,按下回车键后活动单元格会转入下一行的同列单元格中。 如果要转到右边的单元格,能不能实现呢? 打开“工具”菜单,选择“选项”命令,单击“编辑”选项卡,多后从“方向”下拉列表框中选择“向右”,单击“确定”。 这时再按下回车键,活动单元格就转到右边了。 同样,我们可以将回车键设置为其它跳转方向,也可以取消回车键的单元格跳转功能。 注意:按Tab 键也可以实现活动单元格向右跳转
3. 如何给单元格加斜线? 在制作表格过程中,经常要给表头加上斜线, 制作方法如下:先在A1单元格上单击鼠标,先输入右上端文本“科目”,按Alt+Enter键(参见相关技巧),再输入左下端文本“姓名”,按回车键结束文字的输入。当前行自动改变尺寸以容纳两行文本。 将此单元格文本左对齐,然后在第一行文字中加适当空格使其右对齐。 在此单元格上单击鼠标右键,选择“设置单元格格式”命令。在“单元格格式”对话框中,单击“边框”选项卡,选取所需要的斜线方式,如下图所示,单击“确定”按钮,完成表头斜线的添加。
4.分列功能的妙用 我们可以看下面这个例子,原始数据中含有编号,而且随着行数的增加,编号位数也在增加
我们可以分列功能将编号和文本分开。选中此列,单击“数据”菜单中的“分列”命令,弹出“文本分列向导”对话框。 在对话框中提供了两类数据分割方法,一是按固定宽度,一是按分隔符号。将姓与名分开的问题就可以通过选择“固定宽度”项来解决,当前这个例子可以选择“分隔符号”项,单击“下一步”。 这里要选择分隔符号,因为例子中的编号和文本中间都有“、”,所以我们可以选择“其他”复选框,并在后面的文本框中输入“、”,再单击“下一步”。 单击“完成”按钮,编号和文本就被分开了。
5、巧用转置功能粘贴数据 我们手头有这样一个数据表,行表示学生姓名,列表示学生的各科成绩。 如果我们想得到一个以行表示各科成绩,以列表示学生姓名的数据表,应该怎样做呢?其实很简单,EXCEL为我们提供了转置功能。 先选中要进行转换的数据区 如A1:D10,按下Ctrl+C将其复制,再将光标定位在另一个工作表的A1单元格中,然后选择“编辑”菜单中的“选择性粘贴”命令。 在“选择性粘贴”对话框中,选中“转置”复选框,单击“确定”。 看,数据已经符合我们的要求了。
6.快速输入技巧 在Excel 2000的工作表中,如果在多个单元个中输入同一个公式,多次填写某一个字符或某一个有规律数字,一个一个输入是很麻烦的,掌握一些技巧是可以快速输入的。 1、用组合键Ctrl+Enter在多个单元格中输入同一个公式 选定要在多个单元格中输入同一个公式的这一区域,在某一单元格中输入公式后安组合键Ctrl+Enter,那么所选区域那的所有单元格中就都输入了同一公式。 2、用REPT工作表函数在某一单元格中多次填写某一字符 REPT工作表函数的语法为:REPT(text,number_timers)。其中,text为需要重复显示的字符串,不能多能多于255个字符;number_timers为指定文本进行重复的次数,为正数,否则将截尾取整数。 例如,要在某一单元格中重复显示“■”30次,则输入=REPT("■",10),回车即可。 另外,用REPT工作表函数还可以清楚的告诉您在此单元格中次字符的总数。如图一。 3、用填充柄自动填充工作表 在Excel 2000工作表中,如果需要在一行或一列单元格中填入安顺序排列的项目序号,用Excel 2000的自动填充功能可以帮助您快速输入这些数据序列,而且还不容易出错。你不会不知道什么是控制柄吧?选中一个表格,其右下角有一个实心的小方块,它就是控制柄,当鼠标放上去的时候便会变成实心的“+”。其方法:在第一单元格那输入其实数据,在下一个单元格那输入第二个数据,选定这两个单元格,将光标指向单元格右下方的填充柄,沿着要填充的方向拖动填充柄,托过的单元格中会自动的按Excel 2000内部规定的序列进行填充。如(下图二), 在B3中输入“第1名”,然后拖动控制柄往下拉,松开鼠标时所拉
过的区域就自动填充了“第2名、第3名”。在拖动控制柄的过程中我们也可以在鼠标的右边小说明中看到所填充的内容。 如果使用鼠标右键拖动单元格填充柄,也可以实现自动填充。其方法是:在某单元格内输入数据,按住鼠标右键,沿着要填充的方向拖动填充柄,此时就会弹出包含下列各项的快捷菜单(如图三):复制单元格、以序列方式填充、以格式填充、以值填充、以天数填充、以工作日填充、以年填充、等差序列、等比序列。。。。此时,您可以根据需要进行选择填充方式。显然,这种方法更有灵活性。 另外,双击填充柄自动填充工作表也是一个不错的方法 自动填充数字序列和文本序列也可以不拖动填充柄通过单元格区域,而采用双击填充柄的方法实现:对于数字序列的填充,要选定包含初始值单元格在内的两个单元格,然后双击填充柄。而对于文本序列的填充,只需选定初始值单元格,仍然后双击填充柄。 例如:要想在 B2:B11 中输入数字序列“1、2、3.....10”, 只须在B2中输入“1”,选定B2:B11,双击填充柄即可。如果需要在“C2:C7”中输入文本序列“第1名、第2名、.....第6名”,只需要在C2中输入“第1名”,选定C2单元格,双击填充柄即可。 双击填充柄自动填充是一种更为快速的方法,要填充的序列的单元格区域越大,如超过一屏的大区域,越能体现他的优越性。 要注意的是,自动产生的序列数由A2向下直到遇到空白单元格为止的单元格个数决定。例如, A9为空白单元格,那么此法仅在 B2:B8中 产生序列“1、2、3、.....7”。同样,若B5为空白单元格,那么仅在C2:C4中产生序列“第1名、第2名、第3名”。
7、如何快速了解函数的用法 Excel中提供了上百种工作表函数,我们可以根据需要选用。 如果知道所要作用函数的名字,但又记不清它的所有格式,这时我们可以用键盘快捷键把参数粘贴到编辑栏内。 具体方法是:在编辑栏中输入一个等号,然后录入一个函数,再按下Ctrl+A键,弹出公式选项板,里面显示了选定函数的名称及其每个参数。在打开的对话框中添入所需参数,当我们选取任何一个参数时,在对话框中会看到它的解释。 当使用易于记忆的名字且具有很长一串参数的函数时,这个方法非常有用。 如果你不知道EXCEL提供了那些函数,或是记不起函数是怎么写的,可以用下面的方法查看。单击工具栏上的“粘贴函数”按钮,弹出“粘贴函数”对话框。我们可以在左侧列表框中选择函数分类,在右侧列表框中选择函数名称,对话框的下面就会出现一行小字,提示此函数的作用和功能。
8、编辑技巧 (1) 分数的输入 如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再输入分数“1/5”。 (2) 序列“001”的输入 如果直接输入“001”,系统会自动判断001为数据1,解决办法是:首先输入“'”(西文单引号),然后输入“001”。 (3) 日期的输入
如果要输入“4月5日”,直接输入“4/5”,再敲回车就行了。如果要输入当前日期,按一下“Ctrl+;”键。 (4) 填充条纹 如果想在工作簿中加入漂亮的横条纹,可以利用对齐方式中的填充功能。先在一单元格内填入“*”或“~”等符号,然后单击此单元格,向右拖动鼠标,选中横向若干单元格,单击“格式”菜单,选中“单元格”命令,在弹出的“单元格格式”菜单中,选择“对齐”选项卡,在水平对齐下拉列表中选择“填充”,单击“确定”按钮(如图1)。 图1 (5) 多张工作表中输入相同的内容 几个工作表中同一位置填入同一数据时,可以选中一张工作表,然后按住Ctrl键,再单击窗口左下角的Sheet1、Sheet2......来直接选择需要输入相同内容的多个工作表,接着在其中的任意一个工作表中输入这些相同的数据,此时这些数据会自动出现在选中的其它工作表之中。输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。 (6) 不连续单元格填充同一数据 选中一个单元格,按住Ctrl键,用鼠标单击其他单元格,就将这些单元格全部都选中了。在编辑区中输入数据,然后按住Ctrl键,同时敲一下回车,在所有选中的单元格中都出现了这一数据。
(7) 在单元格中显示公式 如果工作表中的数据多数是由公式生成的,想要快速知道每个单元格中的公式形式,以便编辑修改,可以这样做:用鼠标左键单击“工具”菜单,选取“选项”命令,出现“选项”对话框,单击“视图”选项卡,接着设置“窗口选项”栏下的“公式”项有效,单击“确定”按钮(如图2)。这时每个单元格中的分工就显示出来了。如果想恢复公式计算结果的显示,就再设置“窗口选项”栏下的“公式”项失效即可。 图2 (8) 利用Ctrl+*选取文本 如果一个工作表中有很多数据表格时,可以通过选定表格中某个单元格,然后按下Ctrl+*键可选定整个表格。Ctrl+*选定的区域为:根据选定单元格向四周辐射所涉及到的有数据单元格的最大区域。这样我们可以方便准确地选取数据表格,并能有效避免使用拖动鼠标方法选取较大单元格区域时屏幕的乱滚现象。 (9) 快速清除单元格的内容 如果要删除内容的单元格中的内容和它的格式和批注,就不能简单地应用选定该单元格,然后按Delete键的方法了。要彻底清除单元格,可用以下方法:选定想要清除的单元格或单元格范围;单击“编辑”菜单中“清除”项中的“全部”命令,这些单元格就恢复了本来面目。
9、自定义函数
虽然Excel中已有大量的内置函数,但有时可能还会碰到一些计算无函数可用的情况。假如某公司采用一个特殊的数学公式计算产品购买者的折扣,如果有一个函数来计算岂不更方便?下面就说一下如何创建这样的自定义函数。 自定义函数,也叫用户定义函数,是Excel最富有创意和吸引力的功能之一,下面我们在Visual Basic模块中创建一个函数。 在下面的例子中,我们要给每个人的金额乘一个系数,如果是上班时的工作餐,就打六折;如果是加班时的工作餐,就打五折;如果是休息日来就餐,就打九折。首先打开“工具”菜单,单击“宏”命令中的“Visual Basic编辑器”,进入Visual Basic编辑环境,在“工程-VBAobject”栏中的当前表上单击鼠标右键,选择“插入”-“模块”,在右边栏创建下面的函数rrr,代码如下: Function rrr(tatol, rr) If rr = "上班" Then rrr = 0.6 * tatol ElseIf rr = "加班" Then rrr = 0.5 * tatol ElseIf rr = "休息日" Then rrr = 0.9 * tatol End If End Function (如图9)。 图9 这时关闭编辑器,只要我们在相应的列中输入rrr(F2,B2),那么打完折后的金额就算出来了(如图10)。
10、矩阵计算 Excel的强大计算功能,不但能够进行简单的四则运算,也可以进行数组、矩阵的计算。 (1)数组和矩阵的定义 矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括弧即自动产生,数组域得以确认。 一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B={E1:G3}等。数组名的设置步骤是:选定数组域,单击“插入”菜单,选择“名称”项中的“定义”命令,输入数组名,单击“确定”按钮即可。更简单的命名办法为:选择数组域,单击名称框,直接输入名称就行了。 矩阵函数是Excel进行矩阵计算的专用模块。用“插入”-“函数”命令打开“粘贴函数”对话框(如图11),选中函数分类栏中的“数学与三角函数”,在右边栏常用的矩阵函数有: MDETERM——计算一个矩阵的行列式; MINVERSE——计算一个矩阵的逆矩阵; MMULT——计算两个矩阵的乘积; SUMPRODUCT——计算所有矩阵对应元素乘积之和。
图11 (2)矩阵的基本计算 数组计算和矩阵计算有很大的区别,比如下面这个例子中,A和B都是定义好的数组,因为这两个数组都是3×3的,输出结果也是3×3个单元格。计算时先选定矩阵计算结果的输出域,为3×3的单元格区域,然后输入公式。如果输入“=A+B”或“=A-B”,计算结果是数组对应项相加或相减,输入“=A*B”表示数组A和B相乘,输入“=A/B”表示数组A除数组B。如果要进行矩阵计算,就要用到相应的矩阵函数。矩阵相加、相减与数组的加减表达形式是一样的,也是“=A+B”和“=A-B”,表示矩阵相乘可以输入“=MMULT(A,B)”,而矩阵相除是矩阵A乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。公式输入后,同时按Shift+Ctrl+Enter键得到计算结果。 对于更复杂的矩阵计算,可以采用分步计算
11 自动切换输入法 ---- 在一张工作表中,往往是既有数据,又有文字,这样在输入时就需要来回在中英文之间反复切换输入法,非常麻烦。 如果你要输入的东西很有规律性,比如这一列全是单词,下一列全是汉语解释,你可以用以下方法实现自动切换。方法是: (1)选中要输入英文的列,单击“数据”菜单,选择“有效性...”命令,在弹出的“数据有效性”对话框中,选中“输入法模式”选项卡,在“模式”框中选择“关闭(英文模式)”命令,单击“确定”按钮(如图12)。
图12 (2)选中要输入汉字的列,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择“打开”命令,单击“确定”按钮。这样,当光标在前一列时,可以输入英文,在下一列时,直接可以输入中文,从而实现了中英文输入方式之间的自动切换。
12 批量删除空行 有时我们需要删除Excel工作薄中的空行,一般做法是将空行一一找出,然后删除。如果工作表的行数很多,这样做就非常不方便。我们可以利用“自动筛选”功能,把空行全部找到,然后一次性删除。 做法:先在表中插入新的一个空行,然后按下Ctrl+A键,选择整个工作表,用鼠标单击“数据”菜单,选择“筛选”项中的“自动筛选”命令。这时在每一列的顶部,都出现一个下拉列表框,在典型列的下拉列表框中选择“空白”,直到页面内已看不到数据为止(如图13)。
图13 在所有数据都被选中的情况下,单击“编辑”菜单,选择“删除行”命令,然后按“确定”按钮。这时所有的空行都已被删去,再单击“数据”菜单,选取“筛选”项中的“自动筛选”命令,工作表中的数据就全恢复了。插入一个空行是为了避免删除第一行数据。 如果想只删除某一列中的空白单元格,而其它列的数据和空白单元格都不受影响,可以先复制 此列,把它粘贴到空白工作表上,按上面的方法将空行全部删掉,然后再将此列复制,粘贴到原工作表的相应位置上。
8、编辑技巧 (1) 分数的输入 如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再输入分数“1/5 ... [/quote] 请问你的这个图片是用那个软件切取的,可以发一个给我吗?谢谢.
Part 7: EXCEL运用技巧汇总
返回首页
Excel XP的八则快速输入技巧 如果我们在用Excel XP处理庞大的数据信息时,不注意讲究技巧和方法的话,很可能会花费很大的精力。因此如何巧用Excel XP,来快速输入信息就成为各个Excel XP用户非常关心的话题,笔者向大家介绍几则这方面的小技巧。 1、快速输入大量含小数点的数字 如果我们需要在Excel XP工作表中输入大量的带有小数位的数字时,按照普通的输入方法,我们可能按照数字原样大小直接输入,例如现在要在单元格中输入0.05这个数字时,我们会把“0.05”原样输入到表格中。不过如果需要输入若干个带有小数点的数字时,我们再按照上面的方法输入的话,每次输入数字时都需要重复输入小数点,这样工作量会变大,输入效率会降低。其实,我们可以使用Excel XP中的小数点自动定位功能,让所有数字的小数点自动定位,从而快速提高输入速度。在使用小数点自动定位功能时,我们可以先在Excel XP的编辑界面中,用鼠标依次单击“工具”/“选项”/“编辑”标签,在弹出的对话框中选中“自动设置小数点”复选框,然后在“位数”微调编辑框中键入需要显示在小数点右面的位数就可以了。以后我们再输入带有小数点的数字时,直接输入数字,而小数点将在回车键后自动进行定位。例如,我们要在某单元格中键入0.06的话,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”,怎么样简单吧? 2、快速录入文本文件中的内容 现在您手边假如有一些以纯文本格式储存的文件,如果此时您需要将这些数据制作成Excel XP的工作表,那该怎么办呢?重新输入一遍,大概只有头脑有毛病的人才会这样做;将菜单上的数据一个个复制/粘贴到工作表中,也需花很多时间。没关系!您只要在Excel XP中巧妙使用其中的文本文件导入功能,就可以大大减轻需要重新输入或者需要不断复制、粘贴的巨大工作量了。使用该功能时,您只要在Excel XP编辑区中,依次用鼠标单击菜单栏中的“数据/获取外部数据/导入文本文件”命令,然后在导入文本会话窗口选择要导入的文本文件,再按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。 3、快速输入大量相同数据 如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那样需要花费好长时间,而且还比较容易出错。你可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为:首先同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;其次输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。 4、快速进行中英文输入法切换
一张工作表常常会既包含有数字信息,又包含有文字信息,要录入这样一种工作表就需要我们不断地在中英文之间反复切换输入法,非常麻烦,为了方便操作,我们可以用以下方法实现自动切换:首先用鼠标选中需要输入中文的单元格区域,然后在输入法菜单中选择一个合适的中文输入法;接着打开“有效数据”对话框,选中“IME模式”标签,在“模式”框中选择打开,单击“确定”按钮;然后再选中输入数字的单元格区域,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择关闭(英文模式);最后单击“确定”按钮,这样用鼠标分别在刚才设定的两列中选中单元格,五笔和英文输入方式就可以相互切换了。 5、快速删除工作表中空行 删除Excel XP工作表中的空行,一般的方法是需要将空行都找出来,然后逐行删除,但这样做操作量非常大,很不方便。那么如何才能减轻删除工作表中空行的工作量呢?您可以使用下面的操作方法来进行删除:首先打开要删除空行的工作表,在打开的工作表中用鼠标单击菜单栏中的“ 插 入”菜单项,并从下拉菜单中选择“列”,从而插入一新的列X,在X列中顺序填入整数;然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部。删去所有空行中X列的数据,以X列重新排序,然后删去X列。按照这样的删除方法,无论工作表中包含多少空行,您就可以很快地删除了。 6、快速对不同单元格中字号进行调整 在使用Excel XP编辑文件时,常常需要将某一列的宽度固定,但由于该列各单元格中的字符数目不等,致使有的单元格中的内容不能完全显示在屏幕上,为了让这些单元格中的数据都显示在屏幕上,就不得不对这些单元格重新定义较小的字号。如果依次对这些单元格中的字号调整的话,工作量将会变得很大。其实,您可以采用下面的方法来减轻字号调整的工作量:首先新建或打开一个工作簿,并选中需要Excel XP根据单元格的宽度调整字号的单元格区域;其次单击用鼠标依次单击菜单栏中的“格式”/“单元格”/“对齐”标签,在“文本控制”下选中“缩小字体填充”复选框,并单击“确定”按钮;此后,当你在这些单元格中输入数据时,如果输入的数据长度超过了单元格的宽度,Excel XP能够自动缩小字符的大小把数据调整到与列宽一致,以使数据全部显示在单元格中。如果你对这些单元格的列宽进行了更改,则字符可自动增大或缩小字号,以适应新的单元格列宽,但是对这些单元格原设置的字体字号大小则保持不变。 7、快速输入多个重复数据 在使用Excel XP工作表的过程中,我们经常要输入大量重复的数据,如果依次输入,无疑工作量是巨大的。现在我们可以借助Excel XP的“宏”功能,来记录首次输入需要重复输入的数据的命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。使用宏功能时,我们可以按照以下步骤进行操作:首先打开工作表,在工作表中选中要进行操作的单元格;接着再用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。 8、快速处理多个工作表 有时我们需要在Excel XP中打开多个工作表来进行编辑,但无论打开多少工作表,在某一时刻我们只能对一个工作表进行编辑,编辑好了以后再依次编辑下一个工作表,如果真是这样操作的话,我们倒没有
这个必要同时打开多个工作表了,因为我们同时打开多个工作表的目的就是要减轻处理多个工作表的工作量的,那么我们该如何实现这样的操作呢?您可采用以下方法:首先按住“Shift"键或“Ctrl"键并配以鼠标操作,在工作簿底部选择多个彼此相邻或不相邻的工作表标签,然后就可以对其实行多方面的批量处理;接着在选中的工作表标签上按右键弹出快捷菜单,进行插入和删除多个工作表的操作;然后在“文件”菜单中选择“页面设置……”,将选中的多个工作表设成相同的页面模式;再通过“编辑”菜单中的有关选项,在多个工作表范围内进行查找、替换、定位操作;通过“格式”菜单中的有关选项,将选中的多个工作表的行、列、单元格设成相同的样式以及进行一次性全部隐藏操作;接着在“工具”菜单中选择“选项……”,在弹出的菜单中选择“视窗”和“编辑”按钮,将选中的工作表设成相同的视窗样式和单元格编辑属性;最后选中上述工作表集合中任何一个工作表,并在其上完成我们所需要的表格,则其它工作表在相同的位置也同时生成了格式完全相同的表格。 高效办公Excel排序方法"集中营" 排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类。本文以几个车间的产值和名称为例,介绍Excel 2000/XP的数据排序方法。 一、数值排序 1.RANK函数 RANK函数是Excel计算序数的主要工具,它的语法为:RANK (number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元格区域的绝对引用,order是用来说明排序方式的数字(如果order为零或省略,则以降序方式给出结果,反之按升序方式)。 例如图1中E2、E3、E4单元格存放一季度的总产值,计算各车间产值排名的方法是:在F2单元格内输入公式“=RANK(E2,$E$2: $E$4)”,敲回车即可计算出铸造车间的产值排名是2。再将F2中的公式复制到剪贴板,选中F3、 F4单元格按Ctrl+V,就能计算出其余两个车间的产值排名为3和1。如果B1单元格中输入的公式为“=RANK(E2,$E$2:$E$4,1)”,则计算出的序数按升序方式排列,即2、1和3。 需要注意的是:相同数值用RANK函数计算得到的序数(名次)相同,但会导致后续数字的序数空缺。假如上例中F2单元格存放的数值与 F3相同,则按本法计算出的排名分别是3、3和1(降序时)。 2.COUNTIF函数 COUNTIF函数可以统计某一区域中符合条件的单元格数目,它的语法为COUNTIF(range,criteria)。其中range为参与统计的单元格区域,criteria是以数字、表达式或文本形式定义的条件。其中数字可以直接写入,表达式和文本必须加引号。 仍以图1为例,F2单元格内输入的公式为“=COUNTIF($E$2:$E$4, ">"&E2)+1”。计算各车间产值排名的方法同上,结果也完全相同,2、 1和3。
此公式的计算过程是这样的:首先根据E2单元格内的数值,在连接符&的作用下产生一个逻辑表达式,即“>176.7”、“>167.3”等。 COUNTIF函数计算出引用区域内符合条件的单元格数量,该结果加一即可得到该数值的名次。很显然,利用上述方法得到的是降序排列的名次,对重复数据计算得到的结果与RANK函数相同。 3.IF函数 Excel自身带有排序功能,可使数据以降序或升序方式重新排列。如果将它与IF函数结合,可以计算出没有空缺的排名。以图1中E2、E3、 E4单元格的产值排序为例,具体做法是:选中E2单元格,根据排序需要,单击Excel工具栏中的“降序排序”或“升序排序”按钮,即可使工作表中的所有数据按要求重新排列。 假如数据是按产值由大到小(降序)排列的,而您又想赋予每个车间从1到n(n为自然数)的排名。可以在G2单元格中输入1,然后在G3单元格中输入公式“=IF(E3=E2, G3,G3+1)”,只要将公式复制到G4等单元格,就可以计算出其他车间的产值排名。 二、文本排序 选举等场合需要按姓氏笔划为文本排序, Excel提供了比较好的解决办法。如果您要将图1数据表按车间名称的笔划排序,可以使用以下方法: 选中排序关键字所在列(或行)的首个单元格(如图1中的A1),单击Excel“数据”菜单下的“排序”命令,再单击其中的“选项”按钮。选中“排序选项”对话框“方法”下的“笔画排序”,再根据数据排列方向选择“按行排序”或“按列排序”,“确定”后回到“排序”对话框(图2)。如果您的数据带有标题行(如图1中的“单位”之类),则应选中“有标题行”(反之不选),然后打开“主要关键字”下拉列表,选择其中的“单位”,选中排序方式(“升序”或“降序”)后“确定”,表中的所有数据就会据此重新排列。 此法稍加变通即可用于“第一名”、“第二名”等文本排序,请读者自行摸索。 三、自定义排序 如果您要求Excel按照“金工车间”、“铸造车间”和“维修车间”的特定顺序重排工作表数据,前面介绍的几种方法就无能为力了。这类问题可以用定义排序规则的方法解决:首先单击Excel“工具”菜单下的“选项”命令,打开“选项”对话框中的“自定义序列”选项卡(图3)。选中左边“自定义序列”下的“新序列”,光标就会在右边的“输入序列”框内闪动,您就可以输入“金工车间”、 “铸造车间”等自定义序列了,输入的每个序列之
间要用英文逗号分隔,或者每输入一个序列就敲回车。如果序列已经存在于工作表中,可以选中序列所在的单元格区域单击“导入”,这些序列就会被自动加入“输入序列”框。无论采用以上哪种方法,单击“添加”按钮即可将序列放入“自定义序列”中备用(图3)。 使用排序规则排序的具体方法与笔划排序很相似,只是您要打开“排序选项”对话框中的“自定义排序次序”下拉列表,选中前面定义的排序规则,其他选项保持不动。回到“排序”对话框后根据需要选择“升序”或“降序”,“确定”后即可完成数据的自定义排序。 需要说明的是: 显示在“自定义序列”选项卡中的序列(如一、二、三等),均可按以上方法参与排序,请读者注意Excel提供的自定义序列类型。 谈谈Excel输入的技巧 在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种数据都有它特定的格式和输入方法,为了使用户对输入数据有一个明确的认识,有必要来介绍一下在Excel中输入各种类型数据的方法和技巧。 一、输入文本 Excel单元格中的文本包括任何中西文文字或字母以及数字、空格和非数字字符的组合,每个单元格中最多可容纳32000个字符数。虽然在Excel中输入文本和在其它应用程序中没有什么本质区别,但是还是有一些差异,比如我们在Word、PowerPoint的表格中,当在单元格中输入文本后,按回车键表示一个段落的结束,光标会自动移到本单元格中下一段落的开头,在Excel的单元格中输入文本时,按一下回车键却表示结束当前单元格的输入,光标会自动移到当前单元格的下一个单元格,出现这种情况时,如果你是想在单元格中分行,则必须在单元格中输入硬回车,即按住Alt键的同时按回车键。 二、输入分数 几乎在所有的文档中,分数格式通常用一道斜杠来分界分子与分母,其格式为“分子/分母”,在Excel中日期的输入方法也是用斜杠来区分年月日的,比如在单元格中输入“1/2”,按回车键则显示“1月2日”,为了避免将输入的分数与日期混淆,我们在单元格中输入分数时,要在分数前输入“0”(零)以示区别,并且在“0”和分子之间要有一个空格隔开,比如我们在输入1/2时,则应该输入“0 1/2”。如果在单元格中输入“8 1/2”,则在单元格中显示“8 1/2”,而在编辑栏中显示“8.5”。 三、输入负数 在单元格中输入负数时,可在负数前输入“-”作标识,也可将数字置在()括号内来标识,比如在单元格中输入“(88)”,按一下回车键,则会自动显示为“-88”。 四、输入小数
在输入小数时,用户可以向平常一样使用小数点,还可以利用逗号分隔千位、百万位等,当输入带有逗号的数字时,在编辑栏并不显示出来,而只在单元格中显示。当你需要输入大量带有固定小数位的数字或带有固定位数的以“0”字符串结尾的数字时,可以采用下面的方法:选择“工具”、“选项”命令,打开“选项”对话框,单击“编辑”标签,选中“自动设置小数点”复选框,并在“位数”微调框中输入或选择要显示在小数点右面的位数,如果要在输入比较大的数字后自动添零,可指定一个负数值作为要添加的零的个数,比如要在单元格中输入“88”后自动添加3个零,变成“88 000”,就在“位数”微调框中输入“-3”,相反,如果要在输入“88”后自动添加3位小数,变成“0.088”,则要在“位数”微调框中输入“3”。另外,在完成输入带有小数位或结尾零字符串的数字后,应清除对“自动设置小数点”符选框的选定,以免影响后边的输入;如果只是要暂时取消在“自动设置小数点”中设置的选项,可以在输入数据时自带小数点。 五、输入货币值 Excel几乎支持所有的货币值,如人民币(¥)、英镑(£)等。欧元出台以后,Excel2000完全支持显示、输入和打印欧元货币符号。用户可以很方便地在单元格中输入各种货币值,Excel会自动套用货币格式,在单元格中显示出来,如果用要输入人民币符号,可以按住Alt键,然后再数字小键盘上按“0165”即可。 六、输入日期 Excel是将日期和时间视为数字处理的,它能够识别出大部分用普通表示方法输入的日期和时间格式。用户可以用多种格式来输入一个日期,可以用斜杠“/”或者“-”来分隔日期中的年、月、日部分。比如要输入“2001年12月1日”,可以在单元各种输入“2001/12/1”或者“2001-12-1”。如果要在单元格中插入当前日期,可以按键盘上的Ctrl+;组合键。 七、输入时间 在Excel中输入时间时,用户可以按24小时制输入,也可以按12小时制输入,这两种输入的表示方法是不同的,比如要输入下午2时30分38秒,用24小时制输入格式为:2:30:38,而用12小时制输入时间格式为:2:30:38 p,注意字母“p”和时间之间有一个空格。如果要在单元格中插入当前时间,则按Ctrl+Shift+;键。 了解Excel公式的错误值 经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:# N/A!、#VALUE!、#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格,或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。 1.#####!
原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误。 解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值。 2.#VALUE! 当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。 原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。 解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1+A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。 原因二:将单元格引用、公式或函数作为数组常量输入。 解决方法:确认数组常量不是单元格引用、公式或函数。 原因三:赋予需要单一数值的运算符或函数一个数值区域。 解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。 3.#DIV/O! 当公式被零除时,将会产生错误值#DIV/O!。 原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。 解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。 原因二:输入的公式中包含明显的除数零,例如:=5/0。 解决方法:将零改为非零值。 4.#NAME? 在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。 原因一:删除了公式中使用的名称,或者使用了不存在的名称。
解决方法:确认使用的名称确实存在。选择菜单"插入"|"名称"|"定义"命令,如果所需名称没有被列出,请使用"定义"命令添加相应的名称。 原因二:名称的拼写错误。 解决方法:修改拼写错误的名称。 原因三:在公式中使用标志。 解决方法:选择菜单中"工具"|"选项"命令,打开"选项"对话框,然后单击"重新计算"标签,在"工作薄选项"下,选中"接受公式标志"复选框。 原因四:在公式中输入文本时没有使用双引号。 解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法,将公式中的文本括在双引号中。例如:下面的公式将一段文本"总计:"和单元格B50中的数值合并在一起:="总计:"&B50 原因五:在区域的引用中缺少冒号。 解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM(A2:B34)。 5.#N/A 原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。 解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中输入"#N/A",公式在引用这些单元格时,将不进行数值计算,而是返回#N/A。 6.#REF! 当单元格引用无效时将产生错误值#REF!。 原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他公式引用的单元格中。 解决方法:更改公式或者在删除或粘贴单元格之后,立即单击"撤消"按钮,以恢复工作表中的单元格。 7.#NUM! 当公式或函数中某个数字有问题时将产生错误值#NUM!。 原因一:在需要数字参数的函数中使用了不能接受的参数。 解决方法:确认函数中使用的参数类型正确无误。
原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能产生有效的结果。 解决方法:为工作表函数使用不同的初始值。 原因三:由公式产生的数字太大或太小,Excel不能表示。 解决方法:修改公式,使其结果在有效数字范围之间。 8.#NULL! 当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。 原因:使用了不正确的区域运算符或不正确的单元格引用。 解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM(A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同的单元格。 在Excel中快速查看所有工作表公式 只需一次简单的键盘点击,即可可以显示出工作表中的所有公式,包括Excel用来存放日期的序列值。 要想在显示单元格值或单元格公式之间来回切换,只需按下CTRL+`(位于TAB键上方)。 EXCEL2000使用技巧十招 1、Excel文件的加密与隐藏 如果你不愿意自己的Excel文件被别人查看,那么你可以给它设置密码保护,采用在保存文件时用加密的方法就可以实现保护目的,在这里要特别注意的是,自己设定的密码一定要记住,否则自己也将被视为非法入侵者而遭拒绝进入。给文件加密的具体方法为: A、单击“文件”菜单栏中的“保存或者(另存为)”命令后,在弹出的“保存或者(另存为)”的对话框中输入文件名; B、再单击这个对话框中“工具”栏下的“常规选项”按钮,在弹出的“保存选项”的对话框中输入自己的密码;
这里要注意,它提供了两层保护,如果你也设置了修改权限密码的话,那么即使文件被打开也还需要输入修改权限的密码才能修改。 C、单击“确定”按钮,在弹出的密码确认窗口中重新输入一遍密码,再点击“确认”,最后点“保存” 完成文件的加密工作。当重新打开文件时就要求输入密码,如果密码不正确,文件将不能打开。 2、对单元格进行读写保护 单元格是Excel执行其强大的计算功能最基本的元素,对单元格的读写保护是Excel对数据进行安全管理的基础。对单元格的保护分为写保护和读保护两类,所谓写保护就是对单元格中输入信息加以限制,读保护是对单元格中已经存有信息的浏览和查看加以限制。 对单元格的写保护有两种方法: A、对单元格的输入信息进行有效性检测。首先选定要进行有效性检测的单元格或单元格集合,然后从数据菜单中选择“有效数据”选项,通过设定有效条件、显示信息和错误警告,控制输入单元格的信息要符合给定的条件。 B、设定单元格的锁定属性,以保护存入单元格的内容不能被改写。可分为以下步骤: (1)选定需要锁定的单元格或单元格集合; (2)从格式菜单中选择“单元格”选项; (3)在设置单元格格式的弹出菜单中选择“保护”标签,在弹出的窗口中,选中“锁定”; (4)从工具菜单中选择“保护”选项,设置保护密码,即完成了对单元格的锁定设置。 对单元格的读保护有三种方法: A、通过对单元格颜色的设置进行读保护。例如:将选定单元格或单元格集合的背景颜色与字体颜色同时设为白色,这样,从表面看起来单元格中好像是没有输入任何内容,用户无法直接读出单元格中所存储的信息。 B、用其他画面覆盖在需要保护的单元格之上,遮住单元格的本来面目,以达到读保护目的。例如:使用绘图工具,画一不透明矩形覆盖在单元格之上,从格式菜单中选定矩形的“锁定”选项,然后保护工作表,以保证矩形不能被随意移动。这样,用户所看到的只是矩形,而看不到单元格中所存储的内容。 C、通过设置单元格的行高和列宽,隐藏选定的单元格,然后保护工作表,使用户不能直接访问被隐藏的单元格,从而起到读保护的作用。 3、快速填充相同数据 如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那
样需要花费好长时间,而且还比较容易出错。我们可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为: A、同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中; B、输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。 4、使用Excel中的“宏”功能 宏的概念,相信使用过WORD的人都会知道,她可以记录命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。在实践工作中,它可以代替经常输入大量重复而又琐碎的数据,具体宏的定义方法如下:: A、打开工作表,在工作表中选中要进行操作的单元格; B、用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令; C、设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。 5、连续两次选定单元格 我们有时需要在某个单元格内连续输入多个数值,以查看引用此单元格的其他单元格的效果。但每次输入一个值后按回车键,活动单元格均默认下移一个单元格,非常不便。解决此问题的一般做法是通过选择“工具”\“选项”\“编辑”,取消“按回车键后移动”选项的选定来实现在同一单元格内输入许多数值,但以后你还得将此选项选定,显得比较麻烦。其实,采用连续两次选定单元格方法就显得灵活、方便: 单击鼠标选定单元格,然后按住Ctrl键再次单击鼠标选定此单元格。此时,单元格周围将出现实线框。 6、在工作表之间使用超级连接 首先须要在被引用的其他工作表中相应的部分插入书签,然后在引用工作表中插入超级链接,注意在插入超级链接时,可以先在“插入超级链接”对话框的“链接到文件或URL”设置栏中输入目标工作表的路径和名称,再在“文件中有名称的位置”设置栏中输入相应的书签名,也可以通过“浏览”方式选择。完成上述操作之后,一旦使用鼠标左键单击工作表中带有下划线的文本的任意位置,即可实现中文Excel2000在自动打开目标工作表并转到相应的位置处,这一点与WORD的使用很相似。 7、快速清除单元格的内容 首先用鼠标选定该单元格,然后按住键盘上的Delete键,此时你会发现你只是删除了单元格内容,它的格式和批注还保留着。那么如何才能彻底清除单元格呢,请看下面的两种操作步骤: A、选定想要清除的单元格或单元格范围;
B、选择“编辑”菜单中的“清除”命令,这时显示“清除”菜单; C、选择要清除的命令,可以选择“全部”、“格式”、“内容”或“批注”中的任一个。 8、快速修改单元格次序 在实际操作的过程中,我们有时需要快速修改单元格内容的次序。在拖放选定的一个或多个单元格至新的位置的同时,按住Shift键可以快速修改单元格内容的次序。具体方法如下: A、首先用鼠标选定单元格,同时按下键盘上的Shift键; B、接着移动鼠标指针到单元格边缘,直至出现拖放指针箭头,然后进行拖放操作。上下拖拉时鼠标在单元格间边界处会变成一个水平“工”状标志,左右拖拉时会变成垂直“工”状标志,释放鼠标按钮完成操作后,单元格间的次序即发生了变化。 、在Excel中利用公式来设置加权平均 加权平均在财务核算和统计工作中经常用到,并不是一项很复杂的计算,关键是要理解加权平均值其实就是总量值(如金额)除以总数量得出的单位平均值,而不是简单的将各个单位值(如单价)平均后得到的那个单位值。在Excel中可设置公式解决(其实就是一个除法算式),分母是各个量值之和,分子是相应的各个数量之和,它的结果就是这些量值的加权平均值。 10、用Excel绘制函数图像 函数图像能直观地反映函数的性质,用手工方法来绘制函数图像效果不太好,而用Excel绘制函数图像非常简便,所作图像非常标准、漂亮,具体方法如下: A、首先打开电子表格的操作窗口,然后用鼠标选择菜单栏中的“新建”命令,这时屏幕上会出现一个空白的电子表格; B、然后在A列的A1格输入“X=”,表明这是自变量,再在A列的A2及以后的格内逐次从小到大输入自变量的各个值;实际输入的时候,通常应用等差数列输入法,先输入前三个值,定出自变量中数与数的距离,然后点击A2格,按住鼠标拖到A4格选中这三项,使这三项变成一个黑色矩形,再用鼠标指向这黑色矩形的右下角的小方块,当光标变成“+”后,按住鼠标拖动光标到适当的位置,就完成自变量的输入; C、接着在B列的B1格输入函数式y=f(x)的一般函数表达式,如y=1/x;也可在点击工具栏上的函数图标“fx”后,在出现的不同函数列表的选项中选择需要的一种;输入结束后,点击函数输入对话框旁的勾号,B2格内马上得出了计算的结果。这时,再选中B2格,让光标指向B2矩形右下角的方框,当光标变成“+”时按住光标沿B列拖动到适当的位置即完成函数值的计算。注意一定要把该函数中自变量x的位置输入前面A列自变量的绝对位置A2格,这样下面计算的时候才会对不同的自变量进行计算; D、最后点击工具栏上的“图表向导”图标,在出现的各种图表格式图标中选择“X,Y散点图”,然后在出现的“X,Y散点图”类型中选择“无数据点平滑线散点图”;这时,可按住鼠标察看即将绘好的函数图像。另外,对于自变量仅为正值的函数,也可用“图表向导”中的“折线图”格式绘制。
在Excel中自动推测出生年月日及性别的技巧 大家都知道,身份证号码已经包含了每个人的出生年月日及性别等方面的信息(对于老式的15位身份证而言,7-12位即个人的出生年月日,而最后一位奇数或偶数则分别表示男性或女性。如某人的身份证号码为420400700101001,它的7-12位为700101,这就表示该人是1970年元月1日出生的,身份证的最后一位为奇数1,这就表示该人为男性;对于新式的18位身份证而言,7-14位代表个人的出身年月日,而倒数第二位的奇数或偶数则分别表示男性或女性)。根据身份证号码的这些排列规律,结合Excel的有关函数,我们就能实现利用身份证号码自动输入出生年月日及性别等信息的目的,减轻日常输入的工作量。 Excel中提供了一个名为MID的函数,其作用就是返回文本串中从指定位置开始特定数目的字符,该数目由用户指定(另有一个名为MIDB的函数,其作用与MID完全一样,不过MID仅适用于单字节文字,而MIDB函数则可用于汉字等双字节字符),利用该功能我们就能从身份证号码中分别取出个人的出生年份、月份及日期,然后再加以适当的合并处理即可得出个人的出生年月日信息。 提示:MID函数的格式为MID(text,start_num,num_chars)或MIDB(text,start_num,num_bytes),其中Text是包含要提取字符的文本串;Start_num是文本中要提取的第一个字符的位置(文本中第一个字符的start_num为1,第二个为2……以此类推);至于Num_chars则是指定希望MID从文本中返回字符的个数。 假定某单位人员管理希望通过身份证号码自动得出员工的出生年月日及性别,现以此为例,将有关步骤向广大用户作一简要介绍: 1. 选中整个B列,然后执行“格式”菜单中的“单元格”命令,打开“单元格格式”窗口。 2. 选择“数字”选项卡。 3. 在“分类”栏中选择“文本”选项,然后单击“确定”按钮,关闭“单元格格式”窗口,将所有包含有身份证号码的单元格设置为文本格式。 4.将光标移至C3单元格中,然后输入“="19"&MID(B3,7,2)&"年"&MID(B3,9,2)&"月"&MID(B3,11,2)&"日"”内容。其中MID(B3,7,2)就是从身份证号码的第7位开始取2位数,得出该员工的出生年份,MID(B3,9,2)就是得出该员工的出生月份,而MID(B3,11,2)则是该员工的出生日期,这些信息再加上年、月、日等文字就会组成该员工的准确出生年月日“1970年1月1日”。 5. 接下来我们应将光标移至D3单元格中,然后输入“=IF(MID(B3,15,1)/2=TRUNC(MID(B3,15,1)/2),"女","男")”。这就表示取身份证号码的第15位数,若
能被2整除,这表明该员工为女性,否则为男性。 6. 最后我们只需利用自动填充功能对其他各个员工的出生年月日、性别进行填充即可。 上面都是以15位身份证为例进行介绍的,18位身份证的操作方法与此类似,广大用户若使用的是18位身份证,只需对有关函数的取值位置进行适当调整即可(如将“="19"&MID(B3,7,2)&"年"&MID(B3,9,2)&"月"&MID(B3,11,2)&"日"”修改为“=MID(B3,7,4)&"年"&MID(B3,11,2)&"月"&MID(B3,13,2)&"日"”)。 这样就实现了由Excel自动填充员工出生年月日、性别的功能,从而极大地减轻了用户录入数据时的工作量,有兴趣的读者不妨一试。 在EXCEL中增加自动填充序列 中文EXCEL97作为一种功能强大、技术先进的电子表格软件,给我们的办公带来了极大方便。 在EXCEL中提供了自动填充功能,我们在使用时,可以通过拖动“填充柄”来完成数据的自动填充。例如要输入甲、乙、丙、丁……,可以先在指定单元格输入甲,然后将鼠标移至单元格的右下角的小方块处,直至出现“+”字,按住鼠标左键,向下(右)拖动至目的单元格,然后松开即完成了自动填充。可是有时我们会发现有一些数据序列不能自动填充,例如车间一、车间二、车间三等,填充方法有两种: 第一种:单击“菜单”栏上的“工具”,选“选项”→“自定义序列”,这时就可以在“输入序列”栏输入要定义的序列。需要注意的是每输入完成一项就要回车一次,表示一项已经输入完毕,全部输入完成以后单击“添加”→“确定”,这样我们自定义的序列就可以使用了。 第二种:首先把你要添加的序列输入到一片相临的单元格内,例如要定义一个序列:车间一、车间二、车间三,把这三项分别输入到单元H1:H3,单击“工具”→“选项”→“自定义序列”→“导入”,在“导入序列所在的单元格”所指的对话框中输入H1:H3,单击“导入”→“添加”→“确定”,这样新序列就产生了。 定义的序列如果不再使用,还可删除,方法是:单击“工具”→“选项”→“自定义序列”,在“自定义序列”框中,单击要删除的序列,再单击“删除”→“确定”。 发掘Execl XP合并拆分技巧
本人在用Excel XP管理教职工档案时,经常遇到合并或拆分单元格数据的情况,经过一段时间的使用后摸索出了一套自己的“合并与拆分”理论,供同行们参考。 所谓合并数据是指将两列中的数据合并到一列中,拆分数据是指将一列中的数据拆分到两列中,图1为“毕业院校”和“专业”两列的拆分及合并的效果图。 合并数据 要将“毕业院校”和“专业”两列中数据合并为“毕业院校及专业”,有“真”、“假”两种合并方法,所谓真合并就是将两列数据真正合并到一列中,而假合并表面上看是合并为一列了,实际数据还是存在于两列中,具体操作跟我一起来看看吧。 1、真合并 如果将一列中的数据通过再输入合并到另一列中,那不是我们希望看到的解决办法,快捷而准确的操作方法是: (1)将需要合并的“毕业院校”和“专业”两列数据通过“剪切”、“粘贴”移动到一个新工作表中,如命名为“合并”工作表。 (2)在“合并”工作表中将XLS文件另存为TXT文件,单击“文件→另存为”,保存类型选择“文本文件(制表符分隔)”,单击[保存]按钮后根据提示连续单击两次[确定]按钮即可。 (3)在Execl中单击[打开]按钮,重新打开TXT文件,在“文本导入向导→步骤之1”中采用默认设置,单击[下一步]按钮,在“步骤之2”分隔符号中,去掉“Tab键”前复选框的选择,单击[完成]按钮,这时两列中数据合并到一列中。 (4)将合并后的数据再通过“剪切”、“粘贴”操作移动到原工作表的原位置处,合并操作完成。 提示:合并后的数据在原来两列数据(如毕业院校和专业)之间会有一个空格,而有时根据实际需要去掉或加宽空格,可采取如下措施: 方法一:对TXT文件进行编辑 XLS文件中列与列之间数据转换为TXT文件后是以制表符分隔的,此时合并后的数据在原来两列数据之间会有一个空格,改变TXT文件中两列之间距离(即改变空格的大小),对应的XLS文件中原两列数据之间的距离也会随之发生改变,若TXT文件中两列数据之间距离增大或减小为零,则合并的XLS文件中两列数据之间距离也会随之增大或减小为零。如果你要将两列数据无缝合并,建议应用下面两种方法。 方法二:利用函数ConcateName ConcateName函数可以实现将几个文本字符串合并为一个文本字符串,语法为:ConcateName (text1,text2, ……),text1, text2, ……为1到30个将要合并成单个文本项的文本项,这些文本项可以为文本字符串、数字或对单个单元格的引用,如图2所示。
图2 方法三:利用“&”运算符 利用“&”运算符也可将几个文本字符串合并为一个文本字符串,“&”运算方式同“+”、“-”等运算方式一样,如图2所示。 2、假合并 我们也来一个“瞒天过海”吧,呵呵,在对单元格设置边框时,利用工具栏中的“外部框线”将两个单元格框在一起,这样两个单元格中数据就在一个表格中了,打印出来后保证不留一点“作假”痕迹。此招对付较少单元格效果不错,要应付大量的单元格,奉劝你还是来点“真”的吧!否则够你忙的了。 拆分数据 合并方法掌握了,拆分也不难,拆分的方法与前面介绍的合并方法相似,先将XLS文件另存为TXT文件,再对TXT文件进行编辑,将需要拆分的数据用“Tab”键或空格分开,然后再用Excel重新打开编辑后的TXT文件,这样原来在一起的数据就被拆分开了。 处理含有大量信息的表格时,以上合并与拆分的方法很有效,有兴趣的朋友可以试一试。]] ExcelHome精华版整理 (2003年11月14日) By 徒然客 从身份证号码中提取性别 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") A:leaf 道理都是一样的,不过你的公式比那个公式优质 提取性别(无论是15位还是18位) =IF(LEN(A1)=15,IF(MOD(MID(A1,15,1),2)=1,"男","女"),IF(MOD(MID(A1,17,1),2)=1,"男","女"
如果身份证号的输入已是15或18位,用公式 =IF(MOD(LEFT(RIGHT(A1,(LEN(A1)=18)+1)),2),"男","女" xls--->exe可以么? A:Kevin 如果只是简单的转换成EXE,当然可以。 如果你指的是脱离Excel也可以运行,好像没听说过可以。 当然,通过DDE,是可以不运行Excel但调用它的所有功能的,但前提仍然是你的计算机上已经安装了Excel 列的跳跃求和 Q:若有20列(只有一行),需没间隔3列求和,该公式如何做? 前面行跳跃求和的公式不管用。 A:roof 假设a1至t1为数据(共有20列),在任意单元格中输入公式:=SUM(IF(MOD(TRANSPOSE(ROW(1:20)),3)=0,(a1:t1)) 按ctrl+shift+enter结束即可求出每隔三行之和。 跳行设置:如有12行,需每隔3行求和 =SUM(IF(MOD((ROW(1:12)),3)=0,(A1:A12))) 能否象打支票软件那样输入一串数字它自动给拆分成单个数字? Q:如我输入123456.52它自动给拆成¥1 2 3 4 5 6 5 2 的形式并且随我输入的长度改变而改变? A:Chiu 我所知函数不多,我是这样做的,如有更方便的方法,请指点 例如: 在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改为"" 如何编这个公式 Q:我想编的公式是: a/[84 - (b×4)] 其中a是一个数值,小于或等于84;b是包含字符C的单元格的个数;C是一个符号。 这个公式的关键是要统计出包含字符C的单元格的个数,可我不会。 A:dongmu =a/(84-countif(b,"=c")*4)
chwd 我试了一下,不能运行,我想是因为没有指定出现“c”的单元格的范围。比如说“c”在D2-D30中随机出现,在上述公式中要先统计出出现“c”的单元格的个数。这个公式如何做? 再一次感谢! 受dongmu朋友公式的启发,我做出了需要的公式 =a/(84-COUNTIF(D3:D30,"c")*4) skysea575 :其中a是一个数值,小于或等于84;b是包含字符C的单元格的个数;C是一个符号。 "包含字符C"在这里的意思不清楚。你的公式中只可以计算仅含有“C”字符的单元格数。 可能你的想法是计算字符中凡是含有这个字或字母的词。如“文章”和“文字”中都有一个“文”字,是否计算在内? 将文件保存为以某一单元格中的值为文件名的宏怎么写 A:lxxiu 假设你要以Sheet1的A1单元格中的值为文件名保存,则应用命令: ActiveWorkbook.SaveCopyAs Str(Range("Sheet1!A1")) + ".xls" IE中实现链接EXCEL表 Q:我想在IE中实现链接EXCEL表并打开后可填写数据,而且可以实现数据的远程保存(在局域网内的数据共享更新),我的设想是在NT中上提供电子表格服务, 各位局域网内用户在IE浏览器中共享修改数据,请问我该如何操作才能实现这一功能。我是初学者,请尽量讲得详细一点。 A:老夏 mm.xls 桌面 ************************************************************** 貼到計事本- 存為Home.htm擺桌面上- 設為共享- 區域網路其他電腦設捷徑連結Home.htm 懂這三行字的結構,即可寫出網頁資料庫系統 其中每個字都是[物件名稱] 檔案多了改用這個元件 要設幾個框隨便您 EXCEL中求两陈列的对应元素乘积之和 Q:即有简结一点的公式求如:a1*b1+a2*b2+b3*b3...的和.应有一函数XXXX(A1:A3,B1:B3)或XXXX(A1:B3) A:roof 在B4中输入公式"=SUM(A1:A3*B1:B3)",按CTRL+SHIFT+ENTER结束. dongmu =SUMPRODUCT(A1:A10,B1:B10) 求助日期转换星期的问题 Q:工作中须将表格中大量的日期同时转换为中英文的星期几 请问如何处理英文的星期转换,谢谢! A:Rowen 1.用公式:=text(weekday(xx),"ddd")
2.用VBA,weekday(),然后自定义转换序列 3.用"拼写检查",自定义一级转换序列 4.... dongmu 转成英文: =TEXT(WEEKDAY(A1),"dddd") 转成中文: =TEXT(WEEKDAY(A1),"aaaa") 研究彩票,从统计入手 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 这个数列有几千组,只要求比较出有几位相同就行。 我们主要研究彩票,从统计入手。如果你有兴趣我会告诉你最好的方法。急盼。 A:roof 把“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)) 如何自动设置页尾线条? Q: 各位大虾:菜鸟DD有一难题请教, 我的工作表通常都很长,偏偏我这人以特爱美,所以会将表格的外框线和框内线条设置为不同格式,但在打印时却无法将每一页的底部外框线自动设为和其他三条边线一致,每次都必须手工设置(那可是几十页哦!),而且如果换一台打印机的话就会前功尽弃,不知哪位大侠可指教一两招,好让DD我终生受用,不胜感激! A:roof 打印文件前试试运行以下的代码。打印后关闭文件时不要存盘,否则下次要把格式改回来就痛苦了。(当然你也可以另写代码来恢复原来的格式): Sub detectbreak() mycolumn = Range("A1").CurrentRegion.Columns.Count Set myrange = Range("A1").CurrentRegion For Each mycell In myrange Set myrow = mycell.EntireRow If myrow.PageBreak = xlNone Then GoTo Nex
Else Set arow = Range(Cells(myrow.Offset(-1).Row, 1), Cells(myrow.Offset(-1).Row, mycolumn)) With arow.Borders(xlEdgeBottom) .LineStyle = xlDouble '把这一行改成自己喜欢的表线 .Weight = xlThick .ColorIndex = xlAutomatic End With End If Nex: Next mycell End Sub 求工齡 A:老夏 =DATEDIF(B2,TODAY(),"y") =DATEDIF(B2,TODAY(),"ym") =DATEDIF(B2,TODAY(),"md") =DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"月"&DATEDIF(B2,TODAY(),"md")&"日" ******************************************************** DATEDIF() Excel 2000 可以找到說明 Excel 97 沒有說明 是個暗槓函數 如何用excel求解联立方程: Q:x-x(7/y)^z=68 x-x(20/y)^z=61 x-x(30/y)^z=38 到底有人会吗?不要只写四个字,规划求解,我想要具体的解法, A:wenou 这是一个指数函数的联列方程。步骤如下 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 行高和列宽单位是什么? 如何换算到毫米? A:markxg 在帮助中: “出现在“标准列宽”框中的数字是单元格中 0-9 号标准字体的平均数。” 单位应该不是毫米,可能和不同电脑的字体有关吧。 Q:Rowen 是这样: 行高/3=mm 列宽*2.97=mm 鱼之乐 实际上最终打印结果是以点阵为单位的,而且excel中还随着打印比例的变化而变化
如果想用宏写一个完全退出EXCEL的函数是什么? Q:因为我想在关闭lock.frm窗口时就自动退出EXCEL,请问用宏写一个完全退出EXCEL的函数是什么?多谢! A:Application.quit 请问如何编写加载宏? 把带有VBA工程的工作簿保存为XLA文件即可成为加载宏。 请问如何在点击一个复选框后在后面的一个单元格内自动显示当前日期? 如果是单元格用"=TODAY()"就可以了 如果是文本框在默认属性中设置或在复选框的CLICK中设置文本框的内容 EXCEL2000中视面管理器如何具体运用呀? 请问高手EXCEL2000中视面管理器如何具体运用呀?最好有例子和详细说明。明确的功能。不然我还是不能深刻的理解他。 markxg 其实很简单呀,你把它想象成运动场上的一串照片(记录不同时点的场景),一张照片记录一个场景,选择一张照片就把运动“拖”到照片上的时点。不同的是只是场景回复,而值和格式不回复。 用VBA在自定义菜单中如何仿EXCEL的菜单做白色横线? Q:我在做自定义菜单时,欲仿EXCEL菜单用横线分隔各菜单项目,用VBA如何才能做到? A:Rowen 那个东东也是一个部件,我想可以调用,不过没试过. diyee 把它的显示内容中设置为"-"即可。 simen 1.此部件叫什么名字,在控件箱里有吗? 2.用“-”我也试过,用它时单击可以,但你要知道EXCEL自己的横线是不可以单击下去的 kevin_168 object.BeginGroup = True 下面是我用到的代码: Set mymenubar = CommandBars.ActiveMenuBar Set newmenu1 = mymenubar.Controls.Add(Type:=msoControlPopup, _ Temporary:=True) newmenu1.Caption = "文件制作(&M)" newmenu1.BeginGroup = True '这就是你要的白色横线 simen 你知道在窗体中也有这样的分隔线的如何实现呢? kevin_168 这,我可没有试过,不过我做的时候使用一LABEL将其设为 能否在取消“运行宏”时并不打开其它工作表! Q:我看见有些模块(高手给的)能够在取消“运行宏”时并不打开其它工作表!不知是何办法? 但当你启动宏后,工作表才被打开!这种方法是什么? A:Rowen 这些工作表预先都是隐藏的,必须用宏命令打开,所以取消宏的情况下是看不到的.可以打开VBA编辑器,在
工作表的属性窗口中将其Visible 设为xlSheetVisible 立体,看起来也够美观的,不妨一试.象版主所说的多查帮助文件,对你有帮助. 如何去掉单元格中间两个以上的空格? Q:单元格A1中有“中 心 是”,如果用TRIM则变成“中 心 是”,我想将空格全去掉,用什么办法,请指教!! A:用SUBSTITUDE()函数,多少空格都能去掉。如A1中有:中 心 是 则在B1中使用=SUBSTITUTE(A1," ","")就可以了。注意:公式中的第一个“ ”中间要有一个空格,而第二个“”中是无空格的。 打印表头? Q:在Excel中如何实现一个表头打印在多页上? 打印表尾? A:BY dongmu 请选择文件-页面设置-工作表-打印标题-顶端标题行,然后选择你要打印的行。 打印表尾? 通过Excel直接提供的功能应该是无法实现的,需要用vba编制才行。
提取性别(无论是15位还是18位) =IF(LEN(A1)=15,IF(MOD(MID(A1,15,1),2)=1,"男","女"),IF(MOD(MID(A1,17,1),2)=1,"男","女")) 如果身份证号的输入已是15或18位,用公式 =IF(MOD(LEFT(RIGHT(A1,(LEN(A1)=18)+1)),2),"男","女") 如何把这26个表格汇总求和成一个汇总表 A: ACCESS 数据--合并计算///来解决。 鱼之乐 看来有很多朋友有这个方面的需求,说明这是个共性问题,于是我利用access+excel做了一个汇总查询模板,如果您需要可来mail我发给你 0710@963.net excelhelp 假設匯總的工作表叫Sheet1,而存放資料的工作表叫Sheet2, Sheet3, ..., Sheet27,你可以這樣設置公式,把各工作表A1的數值加起來: =SUM(Sheet2:Sheet27!A1) 要注意的是,Sheet1不能在Sheet2和Sheet27中間,Excel不會管工作表的名字,只會把Sheet2和Sheet27中間的*所有*工作表中相關的儲存格(哪怕中間有一個工作表叫Sheet99)加起來。 葡萄 excelhelp的方案是正确的 1、在汇总表单元格内选择“Σ” 2、选择需要叠加的第一个工作表
3、按住shift同时用鼠标选择需要叠加的最后一个工作表 4、选择需要叠加的单元格 5、Enter 实现验证先进先出法, Q: 我做了一个验证先进先出法的表格,但想不出简洁的公式,请各位帮我改进以下公式 ******************************************************** =IF(B3>格式>>自定>>;;;>>確定 D.繪圖層作個美美的圖當按鈕>>右鍵>>指定宏>>選Macro1>>確定 ********************************************************** 還是三層式結構 按鈕當操控介面
步驟A,步驟B,是中間層元件,負責轉換 Execl中繁简互换 Q: 有EXCEL2000中有没有像WORD2000中的繁简互换功能一样的东东呀?在这里谢过了。 A: Rowen XP 中可以,我曾用过,后来删了. 需安装"微软拼音输入法 3.0",并启用"高级语言服务". 工具->语音 中有选项的. 能否象打支票软件那样输入一串数字它自动给拆分成单个数字? Q: 如我输入123456.52它自动给拆成¥1 2 3 4 5 6 5 2 的形式并且随我输入的长度改变而改变? A: Chiu 我所知函数不多,我是这样做的,如有更方便的方法,请指点 例如: 在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改为"" 如下方法是否能够达到所要求的: 在A1输入小写金额,则B1为所要求的 B1=WIDECHAR(A1*100) 将单字节字符转换为双字节字符 或 B1=WIDECHAR(TEXT(A1*100,"¥#"))
officeXP提供了这样的服务 office2002中提供了繁简互换功能,可以到以下网址下载,officeXP的所有程序都可以用 http://office.microsoft.com/offi ... igin=EC790020112052 要去掉其中两个最大值和两个最小值,不知道怎样运用公式 Q: 我要将一行数据进行处理。要去掉其中两个最大值和两个最小值,不知道怎样运用公式,请帮助。 A: Rowen 可参阅:large() 及 Small() 函数 simen 在excel中用max() 和 min()也可, Rowen 我想先排序,再去头尾应更实用些. markxg 是个办法,不过次序打乱了。 最简单的就用MAX()和MIN()工作表函数,也不用编程,帮助里讲的很明白。 ------ 另设的二个数据列,在其中一个数据列中对应的单元格中加入带MIN,MIX的IF判断语句,即如果MAX或MIN得出的结果与源数据相符则,显示为空,如此这样在另一列中在做一次相同的公式即可将源数据转化为你所要求的数据列。 ---------- 以a1~a50为例 =sum(a1:a50)-max(a1:a50)-min(a1:a50) 应该是: =SUM(A1:A50)-MAX(A1:A50)-LARGE(A1:A50,2)-MIN(A1:A50)-SMALL(A1:A50,2) 这个只能减去1个最大和1个最小值,不符合楼主的题意。也可用下面的公式。 =SUM(A1:A20)-SUM(LARGE(A1:A20,{1,2}))-SUM(SMALL(A1:A20,{1,2}))
C1、C2、C3、C4中的公式如何设置? Q: 前日本人提出如下一个问题请诸位大虾帮助指点迷津。 如下表: A B C 1 50 采购 (采购汇总) 2 60 工程 (工程汇总) 3 80 工资 (工资汇总) 4 100 税 (税汇总) 5 70 采购 6 50 工资 7 60 工程 . . . . . . 请问:C1、C2、C3、C4中的公式如何设置? 可能本人没有说清楚,实际上C1、C2、C3、C4是B列的采购合计数、工程汇合计数、工资合计数等,这里烦请诸位高手再指迷津。 A: dick C1={SUM(IF(MOD(ROW(data),4)=1,data))} C2={SUM(IF(MOD(ROW(data),4)=2,data))} C3={SUM(IF(MOD(ROW(data),4)=3,data))} C4={SUM(IF(MOD(ROW(data),4)=0,data))} 使用陣列公式 data:為資料範圍 dongmu 无需数组公式: sumif(条件区域,条件,求和区域) c1=sumif(b1:b7,"采购",a1:a7) c2=sumif(b1:b7,"工程",a1:a7) c3=sumif(b1:b7,"工资",a1:a7) c4=sumif(b1:b7,"税",a1:a7) 取满足条件的记录行 Q: 有一张表,有很多行记录,想通过另外一个表,取满足条件的记录,且不留空行的反映出满足条件 的记录。 A: wenou
在某一空列对每条记录进行判断,符合要求输入该行的行数否则为零,然后用函数。 hxq 你的意思是: 先在这个表中增加一个空列,将符合条件的记录按反映在另张表的行号数字显示,再在另张表上用上IF(),只要ROW()与空列的行号数相等就取这条记录,同时用到了VLOOKUP()。 我试一下,THANK YOU roof 不需要用公式,用菜单中的"数据-->筛选-->高级筛选"会更快些."高级筛选"允许将符合条件的数据行(可以忽略重复行)复制到另一工作表. hxq 难道用一次,就要高级自选一次,我是想固定两个表,后一个表是通的前一个表生成的,但是取前个表符合条件的行的数据,且如果前个表,是1,3 记录 符合条件,我后一个表是中间不断行的显示。 wenou 用index()函数,它有3个参数,第1个参数是源数据矩阵,第2个参数为已筛选出的行数,第3个参数为要从源数据矩阵提取数据所在的列数 hxq 你的方法简单易懂,还有对满足条件的行数如何确定是否可在第二个叁数地方用其它的函数. wenou 除非要筛选的行是特定的行,如偶数行,可用MOD函数作为INDEX函数的行参数,如要筛选的行在行数上是无规律的,则必须在某一空列如E列用IF函数来判断,符合要求的赋值该行的行数否则为零。这样可用LARGE(E:E,ROW(A1))作为第2个参数
Part 8: EXCEL操作-基础篇
返回首页
《1》将一范围的单元格的值同原地加减乘除
有何办法实现将一张表中的数据由元的单位转换为万元. 也就是说将表格中的所有数据同时变为原来的1/10000.请问有什么简便的方法吗?
1.在任一格中(如B1)输入10000 2.游标停在B1上,後按[复制] 3.选取资料范围4.按[编辑]>[选择性贴上] 5.选[除] 6.按[确定] 供您参考!
《2》公式的结果为某值要变为空格单元格有求和公式,如何使该单元格不显示“0”? D8单元格的公式为 =SUM(G8,I8,K8,M8) 如何使当 G8,I8,K8,M8 单元格均无数据时,D8单元格不显示“0”? =if(and(isblank(g8),isblank(i8),isblank(k8),isblank(m8)),"",SUM(G8,I8,K8,M8))
空白单元格如何表示A1是原始值,B1我想让它根据A1的值来决定其值。A1>=0则,B1=A1 A1=0,A1,0)
补充:如果你不想在B1中显示有"0",可去除"选项-显示零值"前的勾.
也可用公式=if(A1>=0,A1,"")
空白单元格用""表示,比如A1为空白单元格,可表示为A1=""
《3》在每页上方自动加上标题行每30行为一页,并加上一个标题,如何实现??? 每30行为一页,并加上一个标题,如何实现???
可以每30行加一个分页符,标题就用“打印标题”来设置。
1、标题 文件-页面设置-工作表-打印标题-顶端标题行,设置一下就好了。2、每页30行 也是在页面设置中,设置上下页边距的调整可以实现,打印预览看一下就可以看到是不是30行了,不到30行你可以将行距加宽,进行调整,以我的经验,加标题的30行/页大概行距是20,这样连制表人的空间都留出来了。
每页30行
“插入》分页符”; 然后每向下移动30行,点菜单“插入》分页符”。
如果是打印财务的满页分户账,可用宏变量1:满页笔数。计算一下满页笔数(以数据单元格的行数为定),打印至此; 变量2:行数。每加30(含标题行)分页。《4》各种公式的错误值代表的意义(#DIV/O!, #N/A…) 了解Excel公式的错误值经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:# N/A!、#VALUE!、#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格,或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。 1.#####! 原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误。 解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值。 2.#VALUE! 当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。 原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。 解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1+A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。 原因二:将单元格引用、公式或函数作为数组常量输入。 解决方法:确认数组常量不是单元格引用、公式或函数。 原因三:赋予需要单一数值的运算符或函数一个数值区域。 解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。
3.#DIV/O! 当公式被零除时,将会产生错误值#DIV/O!。 原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。 解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。 原因二:输入的公式中包含明显的除数零,例如:=5/0。 解决方法:将零改为非零值。 4.#NAME? 在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。 原因一:删除了公式中使用的名称,或者使用了不存在的名称。 解决方法:确认使用的名称确实存在。选择菜单"插入"|"名称"|"定义"命令,如果所需名称没有被列出,请使用"定义"命令添加相应的名称。 原因二:名称的拼写错误。 解决方法:修改拼写错误的名称。 原因三:在公式中使用标志。 解决方法:选择菜单中"工具"|"选项"命令,打开"选项"对话框,然后单击"重新计算"标签,在"工作薄选项"下,选中"接受公式标志"复选框。 原因四:在公式中输入文本时没有使用双引号。 解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法,将公式中的文本括在双引号中。例如:下面的公式将一段文本"总计:"和单元格B50中的数值合并在一起:="总计:"&B50 原因五:在区域的引用中缺少冒号。 解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM(A2:B34)。 5.#N/A 原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。
解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中输入"#N/A",公式在引用这些单元格时,将不进行数值计算,而是返回#N/A。 6.#REF! 当单元格引用无效时将产生错误值#REF!。 原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他公式引用的单元格中。 解决方法:更改公式或者在删除或粘贴单元格之后,立即单击"撤消"按钮,以恢复工作表中的单元格。 7.#NUM! 当公式或函数中某个数字有问题时将产生错误值#NUM!。 原因一:在需要数字参数的函数中使用了不能接受的参数。 解决方法:确认函数中使用的参数类型正确无误。 原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能产生有效的结果。 解决方法:为工作表函数使用不同的初始值。 原因三:由公式产生的数字太大或太小,Excel不能表示。 解决方法:修改公式,使其结果在有效数字范围之间。 8.#NULL! 当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。 原因:使用了不正确的区域运算符或不正确的单元格引用。 解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM(A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同的单元格。
《5》F1~F12键的功用F1: HELP~~~ F2:进入编辑状态F3: 执行"粘贴"操作。Ctrl+F3可以插入一个名称F4:编辑状态下,改变单元格的引用方式
F5:定位F6:在同一表格的不同分拆栏里切换F7:拼写检查F8: 按下之后等同于按住Shift键,叫“扩展” F9:活动工作表重算F10: 等同于Alt,菜单选择F11:自动生成图表F12:另存为
F3: 将定义的名称(名称:代表单元格、单元格区域、公式或常量值的单词或字符串。名称便于理解,例如,“产品”可以引用难于理解的区域“Sales!C20:C30”。)粘贴到公式中。之前得先用 Ctrl+F3 定义名称也可以用 Ctrl+Shift+F3 由行列标志创建名称(名称:代表单元格、单元格区域、公式或常量值的单词或字符串。名称便于理解,例如,“产品”可以引用难于理解的区域“Sales!C20:C30”。)。
《6》我有很多工作表要做一样的事,如设置页眉页脚,难道要一个一个做,当然不用一个关于页眉、页脚设置的小技巧当一个工作簿中有很多张工作表,而你需要为每个工作表设置相同页眉、页脚时: 请按shift键选中所有的工作表,然后进行设置,这样,所有工作表的页眉、页脚就一次设好啦,能节省很多时间。
请问如何sheet1与sheet2同步工作? 请问在sheet1工作同时在sheet2产生同样的格式、内容怎麽做? 例如在sheet1的a1填入「班级」,设成红色,sheet2的a1也同步显示「班级」,设成红色
表格的页脚问题是这样的,我每个表格有4张,总共一个文件里面有6个表格, 相当于总共24页,我希望它能够自动打,而且我想设置页脚为共24页,第?页,怎么办?;)
试一试选择所有的工作表(工作组) 然后再设置页脚,打印的时候也是用工作组打印
把所有工作表选中就可以了 然后你再点打印,或者你先浏览,再设置也行! 《7》为何有人能给工作表标签加底色,我的不能?
《8》我单元格的公式不想让人看见,怎么办? 用“保护工作表”的方式。具体做法请多测试几次,视你需求进行设定。《9》我单元格的内容不想让人看见,怎么设定格式? Excel操作中隐藏单元格内容的技巧1.隐藏单元格内容 选择要隐藏的单元格区域,在“格式”菜单中单击“单元格”,单击“数字”选项卡,在“分类”框中,单击“自定义”,然后在“类型”框中键入三个半角的分号“;;;”。单击“确定”按钮。 此时,这些单元格中的内容将不会显示在工作表中的单元格中,但当你单击某个单元格后,编辑栏中将会显示其内容。如果希望在编辑栏中也不显示其内容,请继续下面的操作。 2.隐藏编辑栏内容 再次选择要隐藏的单元格区域,在“格式”菜单中单击“单元格”,单击“保护”选项卡,选中“隐藏”复选框,单击“确定”按钮。接着在“工具”菜单中选择“保护”子菜单,单击“保护工作表”,然后选中“保护工作表及锁定的单元格内容”复选框,还可以在“取消工作表保护时使用的密码”框中键入密码。单击“确定”按钮。 以后,如果需要在编辑栏中显示这些单元格的内容,请在“工具”菜单中选择“保护”子菜单,单击“撤消工作表保护”;要在单元格中显示其内容,请删除设置单元格格式时在“类型”框中自定义的“;;;”符号即可。《10》您知道套用EXCE表格格式时还可以只选择其中的「颜色、字体….等」吗? 隔行用不同颜色显,请问如何做?
1.条件格式, 自定义, 公式, ...
2.格式 --> 自动套用格式
选择你想要的格式确定 3.在上下两单元格格中设计不同颜色,再选中两单元格,用格式刷刷即可:) 《11》常不知道用什么字体较好吗?参考这篇让您更方便选择… 略《12》单独小写的 i 总是被替换为大写的 I ,为什么啊?怎么解决? 在工作表储存格A1处键入一个小草英文字母 a (字型选 Wingdings3),正确显示了向下箭咀符号,但在B1再键入小草英文字母 i,按回车後,小草老是自动变了大草,不知是什麽原因呢? (Tool settings: AutoCorrect Capitalize first letter of sentence - ticked)
自动更正里, 单独的小写"i"是会被替换为大写的"I"的(英文里"我"总是大写的) 你找找你的自动更正的选项里是否有解决方法: 1.去掉自动更正2.输入"i "后面加个空格, 然后按CTRL+Z(可惜的是空格还在) 3.输入i后按SHIFT+ENTER来确认《13》如何让单元格直接显示公式? 单元格里有公式,如何用一个命令显示单元格公式,或方法请帮忙,多谢!
工具——选项——视图——将“公式”打钩
CTRL + ~ 《14》如何让一行或数行(列)单元格置顶(或左)不动(不受滚动条影响)? 如何使一行单元格置顶? 一行单元格作为表头,无论表格怎样移动,表头位置都不会发生改变。这个该怎样才能办到? 冻结窗格/拆分《15》我开数个工作表确在对底部的状态列只显示一个工作表名称,选取很不方便,怎么办? 任务栏找不到打开的EXCEL文件名? 在EXCEL里,同时打开四个文件,以前除工作表显示当前文件外,其他三个文件名显示在,最低部的状态栏内,但我的机器,不显示打开的三个文件名,但文件确实已经同时打开,不知为什么?请帮忙解释一下,为什么?
问题应在这
《16》G/通用格式“和”@”有什么不同? 单元格属性自定义中的“G/通用格式“和”@”作用有什么不同? 单元格属性自定义中的“G/通用格式“和”@”作用有什么不同? 设定成“G/通用格式“的储存格,你输入数字1..9它自动认定为数字,你输入文字a..z它自动认定为文字,你输入数字1/2它会自动转成日期。设定成“@“的储存格,不管你输入数字1..9、文字a..z、1/2,它一律认定为文字。文字与数字的不同在於数字会呈现在储存格的右边,文字会呈现在储存格的左边。 《17》我要怎么加载或不加载宏? 我想删除讨厌的加载宏? 我在home下载了一个东东,可是每次打开excel就有了,如何才能彻底删除啊
工具->加载宏,找到那个然后将其前面的勾勾去掉。如果它改了你的菜单,可以点工具->自定义,然后将那些按钮拖去。《18》为何我无法直接用光标在单元格里编辑? 为何文本光标不见了? 我遇到了这样的问题:在单元格中无法出现文本输入光标,如要更改单元格中的一部分则不行,只能将单元格中的内容全部清除,再重新输入,请指点。
是否如下图Highlight处未勾选,否则只要在单元格快按两次,游标就会出现。
《19》如何在条件格式输入公式? 条件格式为什么失灵?
若要将选定单元格中的值作为格式条件,请单击“单元格数值”选项,接着选定比较词组,然后键入常量值或公式。如果输入公式,则必须以等号 (=) 开始。若要将公式作为格式条件(用于计算所选单元格之外的数据或条件),请单击“公式”,然后输入用于估算逻辑值 TRUE 或 FALSE 的公式。图片附件: cer.jpg (2003-3-26 10:38, 27.84 K) 《20》好用的ALT+数字好用的ALT+数字
按住ALT不放,然后再键入一个数字可以达到某些效果,不同的数字会有不同的效果,如ATL+178输入的就是平方, 加179就是立方...... 试试吧
字符集 (128-255) 128 · 160 [space] 192 À 224 à 129 · 161 ¡ 193 Á 225 á 130 · 162 ¢ 194 Â 226 â 131 · 163 £ 195 Ã 227 ã 132 · 164 ¤ 196 Ä 228 ä 133 · 165 ¥ 197 Å 229 å 134 · 166 ¦ 198 Æ 230 æ 135 · 167 § 199 Ç 231 ç 136 · 168 ¨ 200 È 232 è 137 · 169 © 201 É 233 é 138 · 170 ª 202 Ê 234 ê 139 · 171 « 203 Ë 235 ë 140 · 172 ¬ 204 Ì 236 ì 141 · 173 205 Í 237 í 142 · 174 ® 206 Î 238 î 143 · 175 ¯ 207 Ï 239 ï 144 · 176 ° 208 Ð 240 ð 145 ' 177 ± 209 Ñ 241 ñ 146 ' 178 ² 210 Ò 242 ò 147 · 179 ³ 211 Ó 243 ó 148 · 180 ´ 212 Ô 244 ô 149 · 181 μ 213 Õ 245 õ 150 · 182 ¶ 214 Ö 246 ö 151 · 183 · 215 × 247 ÷ 152 · 184 ¸ 216 Ø 248 ø 153 · 185 ¹ 217 Ù 249 ù 154 · 186 º 218 Ú 250 ú 155 · 187 » 219 Û 251 û 156 · 188 ¼ 220 Ü 252 ü 157 · 189 ½ 221 Ý 253 ý 158 · 190 ¾ 222 Þ 254 þ 159 · 191 ¿ 223 ß 255 ÿ
《21》我用公式得到的数据如何复制到别的单元格里去(只要数据,不要当中的公式) 如何把用公式得到的数据复制到其它单元格中?
我用公式得到的数据如何复制到别的单元格里去?(只要数据,不要当中的公式) 选择性粘贴 《22》Emily版主的数字转英文及yuanshu兄一个不错的的文件(金额、日期大写函数) 请问金额的数字可以转化为英文大写吗如: US$1,234.00 US Dollars One Thousand Two Hundred And Thirty Four Only.
===
Current Special! Complete Excel Excel Training Course for Excel 97 - Excel 2003, only $145.00. $59.95 Instant Buy/Download Includes 2 Excel VBA Courses (20 lessons and 5 Workbook Downloads in each)
Back to: Excel Custom Function/Formulas. Got any Excel/VBA Questions? Free Excel Help
See Also: Convert Numbers to Words/Text
Here is a very popular bit of code from Microsoft that will convert any currency amount in a cell to English words. All code and text from below here is the work of Microsoft. Summary This article shows you how to create a sample, user-defined function named ConvertCurrencyToEnglish() to convert a numeric value to an English word representation. For example, the function will return the following words for the number 1234.56: One Thousand Two Hundred Thirty Four Dollars And Fifty Six Cents The Function Wizard can also be used to enter a custom function in a worksheet. To use the Function Wizard, follow these steps: 1. Click the Function Wizard button, and select User Defined under Function Category. 2. Select ConvertCurrencyToEnglish, and enter your number or cell reference. 3. Click Finish To Create the Sample Functions 1. Insert a module sheet into a workbook. To do this in Microsoft Excel 97 or Microsoft Excel 98, point to Macro on the Tools menu, and then click Visual Basic Editor. In the Visual Basic Editor, click Module on the Insert menu. In Microsoft Excel
5.0 or 7.0, point to Macro on the Insert menu and click Module. 2. Type the following code into the module sheet.
Function ConvertCurrencyToEnglish (ByVal MyNumber)
Dim Temp
Dim Dollars, Cents
Dim DecimalPlace, Count
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' Convert MyNumber to a string, trimming extra spaces.
MyNumber = Trim(Str(MyNumber))
' Find decimal place.
DecimalPlace = InStr(MyNumber, ".")
' If we find decimal place...
If DecimalPlace > 0 Then
' Convert cents
Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)
Cents = ConvertTens(Temp)
' Strip off cents from remainder to convert.
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
' Convert last 3 digits of MyNumber to English dollars.
Temp = ConvertHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
' Remove last 3 converted digits from MyNumber.
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
' Clean up dollars.
Select Case Dollars
Case ""
Dollars = "No Dollars"
Case "One"
Dollars = "One Dollar"
Case Else
Dollars = Dollars & " Dollars"
End Select
' Clean up cents.
Select Case Cents
Case ""
Cents = " And No Cents"
Case "One"
Cents = " And One Cent"
Case Else
Cents = " And " & Cents & " Cents"
End Select
ConvertCurrencyToEnglish = Dollars & Cents
End Function
Private Function ConvertHundreds (ByVal MyNumber)
Dim Result As String
' Exit if there is nothing to convert.
If Val(MyNumber) = 0 Then Exit Function
' Append leading zeros to number.
MyNumber = Right("000" & MyNumber, 3)
' Do we have a hundreds place digit to convert?
If Left(MyNumber, 1) <> "0" Then
Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "
End If
' Do we have a tens place digit to convert?
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & ConvertTens(Mid(MyNumber, 2))
Else
' If not, then convert the ones place digit.
Result = Result & ConvertDigit(Mid(MyNumber, 3))
End If
ConvertHundreds = Trim(Result)
End Function
Private Function ConvertTens (ByVal MyTens)
Dim Result As String
' Is value between 10 and 19?
If Val(Left(MyTens, 1)) = 1 Then
Select Case Val(MyTens)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
Else
' .. otherwise it's between 20 and 99.
Select Case Val(Left(MyTens, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
' Convert ones place digit.
Result = Result & ConvertDigit(Right(MyTens, 1))
End If
ConvertTens = Result
End Function
Private Function ConvertDigit (ByVal MyDigit)
Select Case Val(MyDigit)
Case 1: ConvertDigit = "One"
Case 2: ConvertDigit = "Two"
Case 3: ConvertDigit = "Three"
Case 4: ConvertDigit = "Four"
Case 5: ConvertDigit = "Five"
Case 6: ConvertDigit = "Six"
Case 7: ConvertDigit = "Seven"
Case 8: ConvertDigit = "Eight"
Case 9: ConvertDigit = "Nine"
Case Else: ConvertDigit = ""
End Select
End Function
===
《23》转英文(另一篇) EXCEL中如何将数字转换为英文在EXCEL中通过格式和TEXT函数可以将数字表示为中文大写格式,现在我需要将数字转示为英文文字格式,如将220转换为two hundred and twenty,请问有什么办法实现。
===
Function fctNumbersLetters(NumberFigures) Dim varLenghtNumber As Integer Dim varThreeLetters As String Dim varThreeFigures As String Dim varSixLetters As String Dim varSixFigures As String Dim varNineLetters As String Dim varNineFigures As String Dim varTwelveLetters As String Dim varTwelveFigures As String Dim varLettersUnits As String Dim varLettersTens As String
Dim varLettersHundreds As String Dim varUnits(9) As String Dim varTens(9) As String Dim varHundreds(9) As String Dim varPremiereLettre As String NumberFigures = Int(Val(NumberFigures)) varLenghtNumber = Len(NumberFigures) varThreeFigures = Right(NumberFigures, 3) If varLenghtNumber > 3 And varLenghtNumber < 7 Then varSixFigures = Right(Left(NumberFigures, Len(NumberFigures) - 3), 3) End If If varLenghtNumber > 6 And varLenghtNumber < 10 Then varSixFigures = Right(Left(NumberFigures, Len(NumberFigures) - 3), 3) varNineFigures = Right(Left(NumberFigures, Len(NumberFigures) - 6), 3) End If If varLenghtNumber > 9 And varLenghtNumber < 13 Then varSixFigures = Right(Left(NumberFigures, Len(NumberFigures) - 3), 3) varNineFigures = Right(Left(NumberFigures, Len(NumberFigures) - 6), 3) varTwelveFigures = Right(Left(NumberFigures, Len(NumberFigures) - 9), 3) End If ' ********************************************************************** varUnits(0) = "0" varUnits(1) = "one" varUnits(2) = "two" varUnits(3) = "three" varUnits(4) = "four" varUnits(5) = "five" varUnits(6) = "six" varUnits(7) = "seven" varUnits(8) = "eight" varUnits(9) = "nine" varTens(0) = "0" varTens(1) = "ten" varTens(2) = "twenty" varTens(3) = "thirty" varTens(4) = "forty" varTens(5) = "fifty" varTens(6) = "sixty" varTens(7) = "seventy" varTens(8) = "eighty" varTens(9) = "ninety"
varHundreds(0) = "0" varHundreds(1) = "one hundred" varHundreds(2) = "two hundred" varHundreds(3) = "three hundred" varHundreds(4) = "four hundred" varHundreds(5) = "five hundred" varHundreds(6) = "six hundred" varHundreds(7) = "seven hundred" varHundreds(8) = "eight hundred" varHundreds(9) = "nine hundred" ' ********************************************************************** ' Hundreds, Tens, Units varLettersUnits = varUnits(Right([varThreeFigures], 1)) varLettersTens = varTens(Left(Right([varThreeFigures], 2), 1)) varLettersHundreds = varHundreds(Left(Right([varThreeFigures], 3), 1)) If Len([varThreeFigures]) = 1 Then varThreeLetters = varLettersUnits End If If Len([varThreeFigures]) = 2 Then varThreeLetters = varLettersTens & " " & varLettersUnits Select Case Right([varThreeFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varThreeLetters = varLettersTens Case 12 varLettersTens = "twelve" varLettersUnits = "" varThreeLetters = varLettersTens Case 13 varLettersTens = "thirteen" varLettersUnits = "" varThreeLetters = varLettersTens Case 14 varLettersTens = "fourteen" varLettersUnits = "" varThreeLetters = varLettersTens Case 15 varLettersTens = "fifteen"
varLettersUnits = "" varThreeLetters = varLettersTens Case 16 varLettersTens = "sixteen" varLettersUnits = "" varThreeLetters = varLettersTens Case 17 varLettersTens = "seventeen" varLettersUnits = "" varThreeLetters = varLettersTens Case 18 varLettersTens = "eighteen" varLettersUnits = "" varThreeLetters = varLettersTens Case 19 varLettersTens = "nineteen" varLettersUnits = "" varThreeLetters = varLettersTens End Select If Right(varThreeFigures, 1) = 0 Then varThreeLetters = varLettersTens End If End If If Len([varThreeFigures]) = 3 Then varThreeLetters = varLettersHundreds & " " & varLettersTens & " " & varLettersUnits Select Case Right([varThreeFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 12 varLettersTens = "twelve" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 13 varLettersTens = "thirteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 14 varLettersTens = "fourteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens
Case 15 varLettersTens = "fifteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 16 varLettersTens = "sixteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 17 varLettersTens = "seventeen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 18 varLettersTens = "eighteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens Case 19 varLettersTens = "nineteen" varLettersUnits = "" varThreeLetters = varLettersHundreds & " " & varLettersTens End Select End If If varThreeFigures = "000" Then varThreeLetters = "" GoTo jumpThousands End If If Right(varThreeFigures, 2) = "00" Then varThreeLetters = varLettersHundreds GoTo jumpThousands End If If Left(varThreeFigures, 2) = "00" Then varThreeLetters = "and " & varLettersUnits GoTo jumpThousands End If If Left(varThreeFigures, 1) = "0" Then varThreeLetters = "and " & varLettersTens & " " & varLettersUnits End If If Left(varThreeFigures, 1) = "0" And Right(varThreeFigures, 1) = "0" Then
varThreeLetters = "and " & varLettersTens GoTo jumpThousands End If ''' *********************************************************************************************** ''Thousands jumpThousands: If varLenghtNumber > 3 Then varLettersUnits = varUnits(Right([varSixFigures], 1)) varLettersTens = varTens(Left(Right([varSixFigures], 2), 1)) varLettersHundreds = varHundreds(Left(Right([varSixFigures], 3), 1)) If Len([varSixFigures]) = 1 Then varSixLetters = varLettersUnits & " thousand" End If If Len([varSixFigures]) = 2 Then varSixLetters = varLettersTens & " " & varLettersUnits & " thousand" Select Case Right([varSixFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 12 varLettersTens = "twelve" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 13 varLettersTens = "thirteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 14 varLettersTens = "fourteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 15 varLettersTens = "fifteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand"
Case 16 varLettersTens = "sixteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varSixLetters = varLettersTens & " thousand" End Select If Right(varSixFigures, 1) = 0 Then varSixLetters = varLettersTens & " thousand" End If End If If Len([varSixFigures]) = 3 Then varSixLetters = varLettersHundreds & " " & varLettersTens & " " & varLettersUnits & " thousand" Select Case Right([varSixFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 12 varLettersTens = "twelve" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 13 varLettersTens = "thirteen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 14 varLettersTens = "fourteen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 15 varLettersTens = "fifteen"
varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 16 varLettersTens = "sixteen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" End Select If Right(varSixFigures, 1) = 0 Then varSixLetters = varLettersHundreds & " " & varLettersTens & " thousand" End If If Right(Left([varSixFigures], 2), 1) = 0 Then varSixLetters = varLettersHundreds & " " & varLettersUnits & " thousand" End If End If If varSixFigures = "000" Then varSixLetters = "" GoTo jumpMillions End If If Right(varSixFigures, 2) = "00" Then varSixLetters = varLettersHundreds & " " & " thousands" GoTo jumpMillions End If If Left(varSixFigures, 2) = "00" Then varSixLetters = varLettersUnits & " " & " thousands" GoTo jumpMillions End If
If Left(varSixFigures, 1) = "0" Then varSixLetters = varLettersTens & " " & varLettersUnits & " " & " thousands" End If If Left(varSixFigures, 1) = "0" And Right(varSixFigures, 1) = "0" Then varSixLetters = varLettersTens & " " & " thousands" GoTo jumpMillions End If End If ''' *********************************************************************************************** '''Million ' jumpMillions: If varLenghtNumber > 6 Then varLettersUnits = varUnits(Right([varNineFigures], 1)) varLettersTens = varTens(Left(Right([varNineFigures], 2), 1)) varLettersHundreds = varHundreds(Left(Right([varNineFigures], 3), 1)) If Len([varNineFigures]) = 1 Then varNineLetters = varLettersUnits & " million" End If If Len([varNineFigures]) = 2 Then varNineLetters = varLettersTens & " " & varLettersUnits & " million" Select Case Right([varNineFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 12 varLettersTens = "twelve" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 13 varLettersTens = "thirteen" varLettersUnits = "" varNineLetters = varLettersTens & " million"
Case 14 varLettersTens = "fourteen" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 15 varLettersTens = "fifteen" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 16 varLettersTens = "sixteen" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varNineLetters = varLettersTens & " million" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varNineLetters = varLettersTens & " million" End Select If Right(varNineFigures, 1) = 0 Then varNineLetters = varLettersTens & " million" End If End If If Len([varNineFigures]) = 3 Then varNineLetters = varLettersHundreds & " " & varLettersTens & " " & varLettersUnits & " million" Select Case Right([varNineFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 12 varLettersTens = "twelve" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 13 varLettersTens = "thirteen"
varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 14 varLettersTens = "fourteen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 15 varLettersTens = "fifteen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 16 varLettersTens = "sixteen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varNineLetters = varLettersHundreds & " " & varLettersTens & " million" End Select End If If varNineFigures = "000" Then varNineLetters = "" GoTo jumpBillions End If If Right(varNineFigures, 2) = "00" Then varNineLetters = varLettersHundreds & " " & " millions" GoTo jumpBillions End If If Left(varNineFigures, 2) = "00" Then varNineLetters = varLettersUnits & " " & " millions" GoTo jumpBillions End If
If Left(varNineFigures, 1) = "0" Then varNineLetters = varLettersTens & " " & varLettersUnits & " " & " millions" End If If Left(varNineFigures, 1) = "0" And Right(varNineFigures, 1) = "0" Then varNineLetters = varLettersTens & " " & " millions" GoTo jumpBillions End If End If '' '''' *********************************************************************************************** ''''Billions '' jumpBillions: If varLenghtNumber > 9 Then varLettersUnits = varUnits(Right([varTwelveFigures], 1)) varLettersTens = varTens(Left(Right([varTwelveFigures], 2), 1)) varLettersHundreds = varHundreds(Left(Right([varTwelveFigures], 3), 1)) If Len([varTwelveFigures]) = 1 Then varTwelveLetters = varLettersUnits & " billion" End If If Len([varTwelveFigures]) = 2 Then varTwelveLetters = varLettersTens & " " & varLettersUnits & " billion" Select Case Right([varTwelveFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 12 varLettersTens = "twelve" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 13 varLettersTens = "thirteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 14
varLettersTens = "fourteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 15 varLettersTens = "fifteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 16 varLettersTens = "sixteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varTwelveLetters = varLettersTens & " billion" End Select If Right(varTwelveFigures, 1) = 0 Then varTwelveLetters = varLettersTens & " billion" End If End If If Len([varTwelveFigures]) = 3 Then varTwelveLetters = varLettersHundreds & " " & varLettersTens & " " & varLettersUnits & " billion" Select Case Right([varTwelveFigures], 2) Case 11 varLettersTens = "eleven" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 12 varLettersTens = "twelve" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 13 varLettersTens = "thirteen" varLettersUnits = ""
varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 14 varLettersTens = "fourteen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 15 varLettersTens = "fifteen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 16 varLettersTens = "sixteen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 17 varLettersTens = "seventeen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 18 varLettersTens = "eighteen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" Case 19 varLettersTens = "nineteen" varLettersUnits = "" varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" End Select If Right(varTwelveFigures, 1) = 0 Then varTwelveLetters = varLettersHundreds & " " & varLettersTens & " billion" End If If Right(Left([varTwelveFigures], 2), 1) = 0 Then varTwelveLetters = varLettersHundreds & " " & varLettersUnits & " billion" End If End If If Right(varNineFigures, 2) = "00" Then varNineLetters = varLettersHundreds & " " & " billions" GoTo jumpFinish End If
End If '''' *********************************************************************************************** ' jumpFinish: If varLenghtNumber < 4 Then fctNumbersLetters = varThreeLetters End If If varLenghtNumber > 3 And varLenghtNumber < 7 Then fctNumbersLetters = varSixLetters & " " & varThreeLetters End If If varLenghtNumber > 6 And varLenghtNumber < 10 Then fctNumbersLetters = varNineLetters & " " & varSixLetters & " " & varThreeLetters If varSixFigures = 0 Then fctNumbersLetters = varNineLetters & " " & varThreeLetters End If End If If varLenghtNumber > 9 And varLenghtNumber < 13 Then fctNumbersLetters = varTwelveLetters & " " & varNineLetters & " " & varSixLetters & " " & varThreeLetters If varSixFigures = 0 Then fctNumbersLetters = varTwelveLetters & " " & varNineLetters & " " & varThreeLetters End If If varSixFigures = 0 And varNineFigures = 0 Then fctNumbersLetters = varTwelveLetters & " " & varThreeLetters End If End If varPremiereLettre = UCase(Left(fctNumbersLetters, 1)) fctNumbersLetters = varPremiereLettre & Right(fctNumbersLetters, Len(fctNumbersLetters) - 1) End Function 《24》如何让单元格为0时显示为 - 格式,单元格,数字,会计专用
当单元格为"0"时,也可以点选工具栏上的"千分位分隔符",即"逗号图标".
选中表格范围 编辑/定位/空单元格然后输入- 按c+enter 定位后,将鼠标在公式编辑栏中点一下,然后直接输入“-",然后按Ctrl+Enter
《25》excel如何循行(row)排序? 《26》我要将大量批注里面的几个字替换为其它字怎么做? 用修订-->批注 然后用替换《27》筛选操作时,有时状态区会出现满足条件的个数统计,有时不会怎么办? 筛选问题在筛选操作时,有时状态栏会出现满足条件的个数统计,不是指求和。 但有时不显示个数统计。各位高手,如何操作!!! 工具-----选项-----重新计算-----选(手动计算)-----确定《28》关于分级显示工作表的说明隐藏功能如何能隐藏列或栏时以 + 或 - 控制呢?希望大家明白小弟问题! 那可能就是分级显示吧
关于分级显示工作表Microsoft Excel 可创建数据分级显示,用鼠标单击即可显示和隐藏明细数据的级别。单击分级显示符号、 和 可迅速地只显示那些为工作表中各部分提供汇总或标题的行或列,或者可使用分级显示符号来查看单个汇总和标题下的明细数据。准备要进行分级显示的数据 要分级显示的数据应为数据清单(清单:包含相关数据的一系列工作表行,例如,发票数据库或一组客户名称和电话号码。清单的第一行具有列标志。)的格式,其中第一行的每一列都有标志,同一列中包含相似的数据,清单中没有空行和空列。在分级显示前,需要将数据进行排序以便将同一组中的行放在一起。在上文的示例中,数据清单是根据地区以及月份排序的,因此“东部”地区清单中三月份和四月份的明细数据行被分在了一起,而“西部”地区清单中每月的明细数据行也被分在了一起。在每组明细数据行的上方或下方将显示汇总行。为了获得最佳效果,汇总行应包含引用每个明细数据行中单元格的公式。在示例中,每月和每个地区的明细数据下方都有一个汇总行。例如,第 14 行的数据是第 11 行到第 13 行的销售额的汇总。也可分级显示包含描述性文本或其他数据的汇总行中的数据。如果要分级显示列而不是行,请确保清单的第一列有列标,并且明细数据列的右边或左边有一个汇总列。 显示和隐藏分级显示数据 分级显示可以具有至多八个级别的明细数据,其中每个内部级别为前面的外部级别提供明细数据。在示例中,包含所有行的汇总的“销售总额”行为第一级别。包含每月汇总的行为第二级,销售的明细数据行为第三级。若要只显示某个特殊级别中的行,您可以单击想要查看的级别对应的数字。在示例中,“东部”地区的明细数据行和“西部”地区“四月份”的明细数据行被隐藏,不过可单击符号来显示这些行。 自动与手动分级显示数据 自动分级显示 如果您的汇总数据中使用了包含诸如 SUM 函数(函数:函数是预先编写的公式,可以对一个或多个值执行运算,并返回一个或多个值。函数可以简化和缩短工作表中的公式,尤其在用公式执行很长或复杂的计算时。)的公式,那么 Excel 可以像示例中一样自动地分级显示数据。汇总数据必须与明细数据相邻。如果将自动分类汇总插入按行组织的数据清单,则 Excel 会在同时自动分级显示工作表,因此就可显示或隐藏所需的任何明细数据。手动分级显示 如果没有对数据进行组织,那么 Excel 就不能自动对其分级显示,但您可手动创建分级显示。例如,如果汇总数据行或列包含数值或描述性文本,而不是公式,则需要手动分级显示数据。
用样式自定义分级显示无论是在创建分级显示时还是创建后,均可对其应用自动样式(样式:字体、字号和缩进等格式设置特性的组合,将这一组合作为集合加以命名和存储。应用样式时,将同时应用该样式中所有的格式设置指令。)。对于分级显示的行,Excel 使用诸如 RowLevel_1 和 RowLevel_2 uses 这样的样式。对于分级显示的列,Excel 使用诸如 ColLevel_1 和 ColLevel_2.uses 这样的样式。样式使用粗体、斜体或其他文本格式来区分数据中的汇总行。通过更改这些样式的定义方式,可应用不同的文本和单元格格式来自定义分级形式的外观。还可使用自动套用格式(自动套用格式:可应用于数据区域的内置单元格格式集合,例如,字体大小、图案和对齐方式。Excel 可识别选定区域的汇总数据和明细数据的级别,然后对其应用相应的格式。)来设置分级显示数据的格式。《29》如何打印行标列号呢?又如果没打印机如何预览打印? 请问如何打印行标列号呢? 还有:可以粘贴带有行标列号的图片吗? 《30》自动填满编序号填充序号问题填充序号问题 如果我用10-001来作序号,用填充---序列没有反应,如果用填充---向下填充,则全是10-001;如果用001来作序号,则自动把001变成了1,如果把单元格设成文本,在填充时同样出现上面的情况。有没有办法来实现序号自动填充的过程。1设为文本时会填充为001 002 003 2可考虑自定义填充3除了填充方法外,还可考虑公式
对於10-001
1.在A1输入 10-001 2.选取A1:A15 3.[编辑]>[填满] 4.选[数列]>[自动填入]>[确定] 至於输入001,变成1 您可以用[格式]>[储存格]...用[自订]为 000的方式完成後,作法同上供您参考!
另一个方法~ 若A栏为编号,B栏中有资料(一定要有资料喔!) 则亦可在A1中输入10-001 ,後快按二下A1的[控点](右下角有一个黑点,游标移过去会变成+号)一样OK! 供您参考!
我的方法很笨:在A1和A2两格分别输入10-001和10-002,然后选定两格向下拖,结果一样. 右键的作用先写上10-001,然后用鼠标右键拉动单元格,选择“以序列方式填充”就可以了。
假设10-001在A1单元,点击A1单元,按住填充柄,按下CRL键,向下拉即可
直接使用填充柄就可以实现10-001......10-019
《31》excel数字格式整数最多可计算几位?小数也一样吗? excel的15位精度是指什么?是不是说支持15位的整数? 这是输入18位的整数另加5位小数123123123123123000.00000 这是一个18位的小数0.000000000000003553 是不是对小数位数的支持是无限的呢?
最多15位,超过部分均为0。在输入超过15位的数据时,应将单元格设置为文本或在输入数据前加“'” 0.000000000000003553 的有效数字只有四位数也就是3553 若改输入为 0.100000000000003553 则只会显示 0.100000000000004000 从 1 ~ 4 共15位
我试了, 0.100000000000003553显示的是0.100000000000003 《32》如何在单元格下拉得一等差或等比序列? 填充柄
请问:在什么情况下按住填充柄下拉得到一个序列,什么时候会是一个拷贝。不要告诉我按住CTRL键。那也是一样的。我是说:如果对于A列不按CTRL键下拉得到一个序列,那么同样的到B列时就可能是一个拷贝。如果按住CTRL 键则相反这有什么规律吗?
点击右键下拉会出现选 项。
在A1单元格中输入 1 ,在A2中输入 2,选中这两个单元格,左键按住填充柄往下拖,你看看如何?!
《33》+ 和 & 的用法文本型数字什么时候会被认为是数值? ="3"=3 得到false ="3"+2 得到5 ="3"+"3" 得到6 请问这种类型变化有什么规律吗
+ 运算符 用来求两数之和。 语法 result = expression1+expression2 + 运算符的语法具有以下几个部分: 部分 描述 result 必需的;任何数值变量。expression1 必需的;任何表达式。expression2 必需的;任何表达式。说明
在使用 + 运算符时有可能无法确定是做加法还是做字符串连接。为避免混淆,请使用 & 运算符进行连接,并且改进程序代码的可读性。如果至少有一个表达式不是 Variant,则可运用以下法则: 如果 则 两个表达式都是数值数据类型 (Byte、Boolean、 Integer、Long、Single、 Double、 Date、Currency 或是 Decimal) 相加。两个表达式都是 String 连接。一个表达式是数值数据类型而另一个是 Null 之外的任意 Variant。相加。一个表达式是 String 而其它是 Null 之外的任意 Variant。连接。 一个表达式是 Empty Variant 返回另一个不变的表达式作为 result。一个表达式是数值数据类型,而另一个是 String 产生一个类型不匹配错误。每个表达式都是 Null result 是 Null。如果两个表达式都是 Variant 表达式,则可运用下列规则: 如果 则 两个 Variant 表达式都是数值相加。 两个 Variant 表达式都是字符串连接。 一个 Variant 表达式是数值而另一个是字符串相加。 对于只有数值数据类型表达式的单纯加法,result 的数据类型通常与其中最精确的表达式的数据类型相同。精确度由最低到最高的顺序是 Byte、Integer、Long、Single、Double、Currency 和 Decimal。但下列情况例外: 如果 则 result 为一个 Single 和一个 Long 相加, 一个 Double。result 的数据类型是 Long、Single 或 Date 变体,且越出正确范围, 转换成 Double 变体。result 的数据类型是 Byte 变体,且超过本身的正确范围时, 转换成 Integer 变体。result 的数据类型是 Integer 变体,且超过本身的正确范围时, 转换成 Long 变体。将一个 Date 加到任何数据类型上, 一个 Date。如果有一个或两个表达式是 Null 表达式,则 result 为 Null。如果两个表达式都是 Empty,则 result 是Integer。但是,如果只有一个表达式是 Empty,则另一个表达式原封不动地作为 result 返回。注意 加法和减法用到的精确度等级与乘法用到的精确度等级不一样。 & 运算符
用来强制两个表达式作字符串连接。 语法 result = expression1 & expression2 & 运算符的语法具有以下几个部分: 部分 描述 result 必需的;任何 String或 Variant 变量。expression1 必需的;任何表达式。expression2 必需的;任何表达式。说明 如果 expression 不是字符串,则将其转换成 String 变体。如果两个表达式都是字符串表达式,则 result 的数据类型是 String;否则 result 是 String 变体。如果两个表达式都是 Null,则 result 也是 Null。但是,只要有一个 expression 是 Null,那么在与其它表达式连接时,都将其作为长度为零的字符串 ("") 处理。任何 Empty 类型表达式也作为长度为零的字符串处理。
我还想知道"="是什么意思? =3="3"得到flase ="a"="A"得到true why?
1)3是数字,“3”是字符串2)主要是因为字符串精确比较的问题,=EXACT("A","a")这是精确等于的工作表公式当然也可以在VBA使用,参见以下帮助Option Compare 语句 在模块级别中使用,用于声明字符串比较时所用的缺省比较方法。 语法 Option Compare {Binary | Text | Database} 说明
如果使用,则 Option Compare 语句必须写在模块的所有过程之前。Option Compare 语句为模块指定字符串比较的方法(Binary、Text 或 Database)。如果模块中没有 Option Compare 语句,则缺省的文本比较方法是 Binary。Option Compare Binary 是根据字符的内部二进制表示而导出的一种排序顺序来进行字符串比较。在Microsoft Windows 中,排序顺序由代码页确定。典型的二进制排序顺序如下例所示: A < B < E < Z < a < b < e < z < _ < _ < _ < _ < _ < ? Option Compare Text 根据由系统区域确定的一种不区分大小写的文本排序级别来进行字符串比较。当使用 Option Compare Text 对相同字符排序时,会产生下述文本排序级别: (A=a) < ( _=_) < (B=b) < (E=e) < (_=_) < (Z=z) < (_=_) Option Compare Database 只能在 Microsoft Access 中使用。当需要字符串比较时,将根据数据库的区域ID 确定的排序级别进行比较。《34》EXCEL里的定位是做什么的EXCEL里的定位是什么意思?怎么用? EXCEL里的定位是什么意思? 怎么用?
能够快速找到满足条件的单元格,比如说批注,公式,引用单元格等
比如你要到ci1362单元格直接输入这个就能到达那里,快捷键为Ctrl+G,很快的达到你要找的单元格
可是在“定位”里输入不了信息,怎么定位?
按 Ctrl+G ,在弹出的定位窗口中的“引用位置”填上想查找的单元,比如“K500”,按确定。
同样可以直接在名称框里输入想查找的单元格如A500,再ENTER。活动单元格便会跳到A500。《35》我以在页眉设定自动页码,现要从第5页开始印,但我想显示第2页怎么办? 请教:页码设置我有一份文档,前面是用WORD做的,后面是EXCEL,EXCEL中大概有40多页SHEET,每个SHEET中为1页,但因EXCEL的页码是跟在WORD后面编,因为WORD最后的页码不固定,因此我想在EXCEL中输入WORD最后的页码,然后每个SHEET的页码自动更新,即假设WORD最后页码为40,则SHEET1的页码为41,SHEET2的页码为42,请教如何编写这段代码?
将EXCEL表格复制到WORD后面即可
我的SHEET有40多页,如复制太慢了。
在起始页码里输入41 在”页眉/页脚“页里添加页码
《36》Help Menu不见了怎么办? Help Menu不见了! 请教各位高手: 工作表功能表列上的[说明]功能表(Help Menu)不见了,是Excel损坏了还是别的原因,请高手帮忙解答?
1.[工具]>[自订] 2.切换至[指令]页3.左侧[类别]选[内建功能表] 4.右侧[指令]选[说明] 5.在[说明]上按住滑鼠[左键]不放6.拖曳至功能表列(会有一个I字符号) 7.选择适当位置,放开左键....OK 8.按[关闭] 去看看出来了没!? 供您参考!
再讲另一个方法,用自定义工具条——恢复默认设置! 当你不知道默认的菜单或是工具条不知道在何处找寻时,可以试试这一招。 当然,你以前辛苦设置的个性化也就泡汤了!:)
《37》怎么将公式动态参照变为固定参照? 很简单的问题┅参照请问┅按甚麽键可以把动态参照变为固定参照?
用F4 《38》单元格中怎样输入18位身份证号多种方法单元格中怎样输入18位身份证号? 在单元格中输入(或从Word中复制)18号身份证号码,总是显示为科学记数形式,怎样才能正确显示?
把该单元格的格式设置为文本或在输入号码的前面输入'符号即可
可将单元格式设置成特殊 选-“设置单元格式”-数字-特殊-邮政编码。可正确显示。
但我有一事不明,为什么设成文本格式,输入长数字之后,又变成了常规格式??
先设置成文本格式再输入长数字没有出现你说的情况啊。(我用的是XP)
你要是先输入长数字再设置成文本,显示的是科学记数法,你要一个一人重新点击才能转换为完全数字,你要是先设置成文本格式在输入长数字就可直接显示为长数字,另外你也可选 -“格式”-数字-自定义-选一个格式后再将样本设置成00000000000000000015个零,可直接显示15位长数字。超过15位不能显示真实数字超过15位的部分显示为000 《39》我为什么么找不到excel中的地图
XP不支持此功能。2000支持。
求助:在哪有地图可用?
在excel2000中有在ecel2002就没了现在该怎么办?
关于地图 在 Microsoft Excel 2002 中不能使用 Microsoft Map。您可以打开使用早期版本的 Excel 创建的地图,但是不能修改地图或创建新地图。要创建可在 Excel 2002 中使用的地图,您可以使用地图产品,例如 Microsoft MapPoint。详细信息请参阅Microsoft MapPoint Web 站点(英文)。《41》如何输入假分数如何输入假分数1又2分之1怎么输入
单元格格式设成”分数“,单元格中输入1.5 先輸入1 再按空白鍵 再輸入 1/2 输入后是这样 “1 1/2 ” 不是内行人看不懂的。有没的更好的办法??
太麻烦了! 在WORD里输入分数,要每次都公式编辑里,我经过查找以前的电脑报,模仿别人做了一个“分数栏”,把常用的分数都显示出来,好像“符号栏”一样,只要一点就可以了。求助 请问千分号怎么输
在智能ABC输入状态下按V+1键,弹出字符表后找到千分号输入即可!
楼主所言与下面的风牛马不相及了.婕妤版主的是对的. 千分号也就是CANDY的了. 插入/符号/数字类型,就有了. 是插入:特殊符号: 单位符号‰
二分之一,四分之一, 四分之三可用ALT+189(188,190)获得.
用自定义格式"#-?/?" 可以吗, 这样输入9/2就变成4-1/2, "4"是整数, "-"后是小数. 《40》如何做到在A列用英文输入,在b列用汉字输入,在c列用英文输入而不用切换输入法如何做到在A列用英文输入,在b列用汉字输入,在c列用英文输入? 如何做到在A列用英文输入,在b列用汉字输入,在c列用英文输入而不用切换输入法 以前有人介绍过,忘了
在B列的数据有效性-“输入法模式”-“模式”设为打开。
《41》在EXCEL按住SHIFT然后选「编辑」或「插入」,您会发现有些选项和没按SHIFT是不一样的《42》怎样输入数组公式→按Ctrl+Shift+Enter 《43》改变列号ABCD...变为1234.... 为何列标A,B,C.......会变成数字1,2,3,4......... 我的excel列标符号怎么会变成数字123456789。。。。。。。
菜单中,工具→选项→常规,在设置中取消 R1C1 引用式样《44》数据有效性详细教学略
Ⅰ条件格式篇
经典题
……用函数获得当前工作表名称及工作簿名称获取当前工作表的名称[必须为已存盘的文件]: =MID(CELL("filename"),FIND("]",CELL("filename"))+1,100) 用 31 已足夠, WorkSheet 名稱不可以大于 31 ……求两日期相格多少年怎样算出两个日期之间的间隔合多少年?用什么函数,如何表示
先用Year()取得年份,再相减。
=DATEDIF(start_date,end_date,"Y") 用date360这个函数可得到天数再除以360就可以了,谢谢各位
=YEARFRAC(START_DATE,END_DATE,1)
=DATEDIF (START_DATE,END_DATE,"D")/365 ……用公式求出最大值所在的行如A1:A10中有10个数,怎么求出最大的数在哪个单元格?
b2单元格公式=MATCH(LARGE(A1:A10,1),A1:A10,0)
上面写法真是簡單,建議使用.我再寫一個相反的應用,開拓思路: =address(MATCH(SMALL(A1:A10,COUNTA(A1:A10)),A1:A10,0),1)
{=ADDRESS(SUM(($A$1:$A$10=MAX($A$1:$A$10))*(ROW($A$1:$A$10))),SUM(($A$1:$A$10=MAX($A$1:$A$10))*(COLUMN($A$1:$A$10))))}
=ADDRESS(MATCH(LARGE(A1:A10,1),A1:A10,0),1) or =ADDRESS(MATCH(MAX(A1:A10,1),A1:A10,0),1)
求长度:
{=ADDRESS(MATCH(MAX(LEN(A1:A10)),LEN(A1:A10),FALSE),1)}
{=IF(ROW(1:1)<=COUNTIF($A$1:$A$100,MAX($A$1:$A$100)),ADDRESS(LARGE(IF($A$1:$A$100=MAX($A$1:$A$100),ROW($A$1:$A$100)),ROW(1:1)),1),"")}
返回单元格地址:
取工作表中最后一栏数值请问:有无函数能搜索另一个工作表中最后一栏数值(表中每天都会填入数字,所以最后一栏每天都不同:最后一栏今天在D5,明天可能在D10,后天又会在D13....) 试试Sheet1D栏最後数值{=INDEX(Sheet1!D:D,MAX(ROW(1:1000)*(Sheet1!D1:D1000<>"")))} Sheet1D栏最後一列列值{=ROW(INDEX(Sheet1!D:D,MAX(ROW(2:1001)*(Sheet1!D2:D1001<>""))))} 以上供参考 这是一个数组公式 假设Sheet1 D1:D10有资料D11以後其他列为空白列,
则MAX(ROW(1:1000)*(Sheet1!D1:D1000<>"")) 会传回 MAX({1;2;3;4;,5;6;7;8;9;10;0;0;0;0;0;0;0;...........}) 而 Max函数会传回阵列最大的值,所以会得到D1:D1000中最後一个使用的列号即第10列
{=INDEX(Sheet1!D:D,MAX(ROW(1:1000)*(Sheet1!D1:D1000<>"")))}最合我的要求.
……计算某个单元格中包含多少个指定的字符 有没有这样的函数?! 急!!! 怎么能方便的判断某个单元格中包含多少个指定的字符??? 例:A1 中是“ASAFAG”,我希望计算出A1里面有多少个“A”......
=LEN(A1)-LEN(SUBSTITUTE(A1,"A","")) ……一行(列)`的最后一个值及行(列)号,可含空格……数字转大写金额 =IF(TRUNC(A1)=A1,TEXT(A1,"[DBNum2]")&"元整",IF(TRUNC(A1*10)=A1*10,TEXT(TRUNC(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]")&"分")) 负数的话,加一个判断,如果是负数,将整个结果的“-”用REPLACE()函数改称“负”字就行了。
或者试试这个函数(转) 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
Part 9: EXCEL问题集锦
返回首页
001。用命令按扭打印一个sheet1中B2:M30区域中的内容?
我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容?
解答:可以将打印区域设为b2:m30,然后打印,如:
sheets("sheet1").printarea="b2:m30"
sheets("sheet1").printout
随手写的,你可以试试看。最简单的方法是:你先录制宏,在录制宏过程中, 跑到页面设置里面, 把打印范围设置到你想要的范围。
然后退出, 停止录制宏, 你就可以得到一些代码!
002。能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。如何处理?我用{"&-}不行
解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行)
003.能否根据单元格数值自动标记序号?
各位大佬,一工作表有两列,“序号”及“金额”,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设置?
解答:Dim xuhao As Integer
xuhao = 1
Range("b2").Select
Do While Selection <> ""
If Selection <> 0 Then
ActiveCell.Previous.Value = xuhao
xuhao = xuhao + 1
End If
ActiveCell.Offset(1, 0).Range("a1").Select
Loop
004.求教自定义函数
查询了一些自定义函数的例子都是单变量的。自定义函数能否建立“(As Range) As Interger”的函数,应该可以的,请各位大师赐教!请以“Σx2”为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。)
解答:参数使用Range而函数值为Integer是可以的
用for each next循环思路也是对的,应该这样作:
dim rg as range
dim ivalue as integer
for each rg in 参数区域
ivalue=ivalue+rg.value
next
函数=ivalue
大概意思如此,但没有加入防错处理,你自己先试试看,有问题在问。
又问:试了一天,还是不行。
Public Function x2(rng As Range) As Integer
Dim rng As Range
Dim ivalue As Integer
For Each rng In rng.Range
ivalue = ivalue + rng.value ^ 2
Next
x2 = ivalue
End Function
还望您的帮助。
解答:Public Function SUMX2(rng As Range) As Integer
'你的错误有几项:
'1.函数名不能使用单元格位址的形式,否则在工作表中引用函数产生歧义,excel以为你引用单元格
'2.参数名与内部变量名冲突,rng本来是定义参数,在过程中不应出现重名变量
'3.rng已被定义为range对象变量,实际意义是一range引用,不能再用rng.Range引用,range的range属性是什么呢,没有吧
'函数我已经给你改了,基本能用
Dim rg As Range
Dim ivalue As Integer
For Each rg In rng
ivalue = ivalue + rg.value ^ 2
Next
SUMX2 = ivalue
End Function
结果:调试成功!,非常感谢!
005.判斷字符串的包含性
用什么命 令“abcdefg”是否包含“abc”?
解答:If VBA.InStr(1, "abcdefg", "abc") <> 0 Then MsgBox "包含"
006.利用背景实现套打的解决方案
利用背景套打主要在于数据打印位置的确定,关键就是要使图片和实物之间的尺寸保持一致,这里我引入一个中间参照物—空白表(只有表格线的表)。具体操作以套打支票为例说明:
(1)将支票扫描成图片。
(2)打印一个空白表,使其与支票尺寸一致(需反复调整打印,也可行、列分别打印)。
(3)用“画图”的缩放功能调整图片大小,导入excel作背景,并使其与空白表大小一致(亦需反复调整导入,每次均用原图缩放,再另存为一个文件)。
(4)根据图片背景调整好单元格,填入数据后套打支票,效果是匹配度达99%。
(5)由于每次都是用原图缩放,故可取得缩放比例作为参数,再套打其他表格时,即可直接依参数缩放图片。
思路:因为空白表=支票,图片=空白表,所以图片=支票。
该方案已证实可行。
007.宏放在worksheet和sheet及模块中各有什么区别?
解答:放在thisworkbook或sheet中的宏与模块中的宏的主要区别是book或sheet中的过程函数只能是对象所专有的,不能在对象之外的任何地方调用(很显然不能声明Public过程,否则编译报错),而模块中声明Public过程函数可以在任何地方使用。
008.关于excel问题
在excel中如何用公式实现单元格内容递增?
如: AB12
AB13
AB14
.......
AB100
条件是无法确定储存格中的内容的前面有多少个字符,也就是,可能是2个,也可能是3个,或者更多。
解答:為什麼要用公式呢?
如 A1 = AB12 ,只要你向下拉的複制就可以。
公式可參考 (條件是 AB12 不可以是 AB02, 處理 0 為首的數字有困難,亦不可以只有英文字)
A1 = AB12
A2 = LEFT(A1,LEN(A1)-SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))) & RIGHT(A1,SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))))+1
(A1 = AB12
公式
=LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))
答案看到的是 4 ,但其實它回傳一個數組 {4,3,3,4,4,4,4,4,4,4}
公式
=LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))
答案看到的是 0 ,但其實它回傳一個數組 {0,1,1,0,0,0,0,0,0,0}
公式
=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))) 是將{0,1,1,0,0,0,0,0,0,0} 加總
= 2)
009.给数组公式、VBA爱好者泼点冷水。
数组公式、VBA威力巨大,在某些情形下提高效率非常明显,但各有其弱点。数组公式在大数据的时候,运行速度慢得无法忍受。比如,我日常需要编制得几个报表,原始数据有4-8万行,20——30列,用数组根本无法操作。倒是利用数据透视表及其他一些组合功能,可谓神速。而VBA主要适用与日常比较固定的一些工作,对于一些临时性工作而言,缺乏灵活性,有杀鸡用牛刀之嫌疑。因此,根据我个人多年工作经验的体会,能熟练地灵活运用EXCEL基本功能和常用函数,就可以高效地完成大部分日常工作。
我比较常用地东西有:数据透视表,数据——有效性,ctrl+enter,index ,match,indirect,offset,if,vlookup,下拉列表框,绝对引用与相对引用,编辑——选择性粘贴(数值、乘除、转置等),图表,条件格式,定义名称,分列,填充等。
相反观点:数据透视表的计算是excel中内置的,同样的计算次数速度与数组公式是一样的,数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有的引用数据进行计算,不管这些数据是否有效。
VBA应该是最灵活的,在VBA中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得多),再将结果记入需要的单元格中,然后删除辅助表。
其实你说的那些基本操作均可用VBA来做的,速度比手工做要快。
010.从式子抽取一小式子的问题?
b1=sum(a1:a10)+(10+20)/4,怎么从中取出(10+20)/4或其结果(即5)?用evaluate、get.cell都不能取出。
解答:定义X=get.formula($B$1)得到B1的公式,再用MID、Right等函数截取
011.or可以用数组应用?
有一个工作表,数据上万行,其中一列是我要分析的数值,数值比如为:0111,0112,0113,0114,0115,0116,0117中的任何一个。我要统计除0111,0113,0115之外的数据。公式:{sum(if(or(sheet!A2:A1111="0111",sheet!a2:a1111="0113",sheet!a2:a1111="0115"),1,0))},可是统计数字和我筛选相加的不一样,用if层层选,可以。请问原因?
解答:数组公式中用*、+代替AND、OR
{sum(if((sheet!A2:A1111="0111")+(sheet!a2:a1111="0113")+(sheet!a2:a1111="0115"),1,0))}
012.countif表达式的格式
请问:我想找A1:A15中,值不为空的数目,用countif命令怎么写呢?
解答1:应为counta(a1:a15)。countif为找a1:a15中,特定值的数目。
解答2:=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTIF(A1:A15,"")
=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTBLANK(A1:A15)
解答3:直接用count(a1:a15)不是更好吗!
013.删除字符串中某个字符的函数是什么?删除字符串中某个字符的函数是什么?
举例:字符串“i love you a!"想删除a字面,应该用什么函数实现?还有就是在字符串中某个位置加入某个字符用什么函数呢?
解答:如果有一定的规律,可以用Replace函数。例如:在A1单元格已有的字符串”123467"中加入个5变为“1234567”。可以这样做:=replace(a1,5,,"5")
另一方法:用CONCATENATE函数。
例如:a5单元格里的数据是“asdfhjkl",在另外的单元格了输入下面的函数
CONCATENATE(LEFT(A5,4),"l",RIGHT(A5,4)),得到的结果就是”asdflhjkl",然后用“选择性粘贴,粘贴数值”粘贴回a5单元格就可以了。
014.两表合一实例
问题提出:怎样把两个表(有相同的字段)怎样合并成一个表?
思路:用CountIf()函数对表1进行判断,如果其值为0,则表示没以重复,再将表2中和表1不重复的数据复制到表1中,从而实现两表合一。
解题的方法:
Sub dd()
b = Sheets(2).[a1].CurrentRegion.Rows.Count + 1
‘判断表2的行数
For i = 3 To b
a = Sheets(1).[a1].CurrentRegion.Rows.Count + 1
‘判断表1的行数
c = Sheets(2).[a1].CurrentRegion.Columns.Count
‘判断表2的列数
If Application.WorksheetFunction.CountIf(Sheets(1).[b1:b1000], Sheets(2).Cells(i, 2)) = 0 Then
Sheets(2).Range(Sheets(2).Cells(i, 1), Sheets(2).Cells(i, c)).Copy Sheets(1).Cells(a, 1)
‘将表2中与表1不重复的数据复制到表1中
End If
Next
End Sub
015.有没有办法把加载宏内置到Excel文件里?
因为用了 Networkdays 函数,用到了分析工具库,但是还要发给别人,怎么办?
解答:试试在"Thisworkbook"中写如下语句:
Private Sub Workbook_Open()
Application.RegisterXLL Filename:= _
"Office安装路径\Office\Library\Analysis\ANALYS32.XLL"
End Sub
又问:Office安装路径怎么写呀?大家不一定都装在C盘上。
解答:试试:Application.Path & "\Library\Analysis\ANALYS32.XLL"
046.如何在userform上显示最大化与最小化按钮
解答:
利用API
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME As Long = &H40000 '(恢复大小)
Private Const WS_MINIMIZEBOX As Long = &H20000 '(最小化)
Private Const WS_MAXIMIZEBOX As Long = &H10000 '(最大化)
Private Sub UserForm_Initialize()
Dim hWndForm As Long
Dim IStyle As Long
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
IStyle = GetWindowLong(hWndForm, GWL_STYLE)
IStyle = IStyle Or WS_THICKFRAME '还原
IStyle = IStyle Or WS_MINIMIZEBOX '最小化
IStyle = IStyle Or WS_MAXIMIZEBOX '最大化
SetWindowLong hWndForm, GWL_STYLE, IStyle
End Sub
017.这个判断代码怎么写
在A列输入日期,如果所输入日期为1月1日或5月1日则B列相关单元格+1,其他日期+0,这要用到什么函数?代码怎么写?谢谢!
解答:用IF函数或用Worksheet_Change事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If IsDate(Target) Then
If (Month(Target) = 1 And Day(Target) = 1) Or (Month(Target) = 5 And Day(Target) = 1) Then
Target.Offset(0, 1) = Target.Offset(0, 1) + 1
End If
End If
End If
End Sub
018.这个汇总表拆分程序怎么写,高手帮忙!
要将总表里的数据按工作单位字段拆分成数个分表(每个单位一张表格,标签名字为工作单位)这个程序怎么编写,请高手指点。如果记录增多或字段增多(但拆分字段不增)这个程序又应该怎样改写,请高手稍微讲解一下,应为我不是为这一个表,还想用到别的工作表中,谢谢!
解答:Sub Add_data(sht_Name) '找出要取资料的区域
Dim i As Integer, j As Integer, row_d As Integer
Dim First_row As Integer, Last_row As Integer
On Error Resume Next
With Sheets("总表")
i = 1
Do Until .Cells(i, 3).value = sht_Name
i = i + 1
Loop
First_row = i
j = First_row
Do Until .Cells(j, 3) <> sht_Name
j = j + 1
Loop
Last_row = j - 1
End With
Sheets("总表").Range(Cells(First_row, 1), Cells(Last_row, 12)).Select
Selection.Copy
Sheets(sht_Name).Select
Range("A2").Select
ActiveSheet.Paste
With ActiveSheet
row_d = .Range("A2").End(xlDown).Row + 1
Range("B" & row_d).value = "合计"
For i = 5 To 11
Cells(row_d, i).value = Application.WorksheetFunction.Sum(Range(Cells(2, i), Cells(row_d - 1, i)))
Next i
End With
Sheets("总表").Activate
Range("A2").Select
End Sub
020.这个公式应该怎么写?
我想统计所有物料编码的第一个字符为a的库存数量的总和,这个公式应该怎么写?A列为物料编码,B列为库存数量。
解答:=SUMIF($A:$A,"a*",$B:$B)
021.样修改此宏?
下面的宏是k版主帮我写的,从文件夹内汇入其他工作表表格。汇入范围为第五行、第L列。
如汇入范围改为第三行、第R列。
怎样修改此宏?
Public Sub Feed_in2()
Dim Row_dn, Row_dn1, i, j, k, m As Integer
Dim Path1, Str1 As String
Dim wb As Workbook
Row_dn = [B65536].End(xlUp).Row
Path1 = Application.ActiveWorkbook.Path
Str1 = ActiveWorkbook.Name
k = 5
With Application
.EnableEvents = False
.ScreenUpdating = False
If Row_dn >= 5 Then
Range("B5:L" & Row_dn).ClearContents
End If
With .FileSearch
.NewSearch
.LookIn = Path1
.FileType = msoFileTypeExcelWorkbooks
If .Execute <= 1 Then
MsgBox "files no found": Exit Sub
Else
For m = 1 To .FoundFiles.Count
Str2 = Split(.FoundFiles(m), "\")
n1 = UBound(Str2)
Str2 = Str2(n1)
If Str2 <> Str1 Then
Set wb = Workbooks.Open((Path1 & "\" & Str2), True, True)
Row_dn1 = wb.Sheets(1).[B65536].End(xlUp).Row
For i = 5 To Row_dn1
For j = 2 To 12
Workbooks(Str1).Sheets(1).Cells(k, j) _
= wb.Sheets(1).Cells(i, j)
Next j
k = k + 1
Next i
wb.Close False
Set wb = Nothing
End If
Next m
End If
End With
.EnableEvents = True
End With
End Sub
解答:除了B65536中的5,其余5都改成3;将Range("B5:L" & Row_dn)改成Range("B5:R" & Row_dn);将For j = 2 To 12改成For j = 2 To 17。
022.怎样控制textbox的只读,要使textbox中的数据不能改变(删除或修改),在属性里我没有找到
有相关的方法吗?
解答:Textbox.Enabled = False,直接修改控件属性都行。
又问:这样还不行,因为Textbox在显示上就灰显了,我想只让它不可改变值,在显示上还是原来的形式。
解答:那就用Label代替,设置BackColor和SpecialEffect属性。
023.请教个小问题!
你好:我录制了个删除工作表的宏,但每次运行后,总出现确认删除提示框,请问该如何编写,直接默认删除,不在作确认呢?
解答:Application.DisplayAlerts = False
代码为:Sub Dell()
'
' Dell Macro
' DC.Direct 记录的宏 2003-11-14
Application.DisplayAlerts = False
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
024.小知识:当垂直滚动条滚动到无法显示1-3行时,冻结窗口,1-3行就好像被隐藏了,但是取消隐藏也不行。
025.选A1后,自动显示B1内容,有无方法实现。有A1列和B1两列,*D1处做了数据-有效性-序列-选择A1~A9
*D1选择A1时,要求在G1中自动跳出B1的内容, 选A2时,自动跳出B2的内容*余此类推。
解答:G1公式:=Vlookup(D1,A1:B9,2,0)
又问:假设,有C列中也有数据,我要在G1中显示C列中的数据,该怎么算?
解答:G1公式:=Vlookup(D1,A1:B9,3,0)
026. 向上填充的快捷键是什么?我只会向下填充的快捷键,向上-向左-向右的都是什么呢?
解答:向上-Alt+E,I,U。向左-Alt+E,I,L。向右-CTRL+R
027.下方单元格上移,包含该单元格的公式不要变化
哪位高手帮帮忙!我试验了很久也没找到解决的办法:
能不能做到删除单元格以后,下方单元格上移,包含该单元格的公式不要变化。或者是:按住shift拖动单元格,使两个单元格互相交换位置以后,包含该单元格的公式不要发生变化。注意,用加$的办法是不能解决这个问题的,如公式改为:=SUM($A$1:$A$9),经上述操作后,结果还是一样。
解答:=SUM(INDIRECT("A1:A10"))
新问题:但是还有一个问题:我这一列有2000多个数据,似乎不能通过拖动的办法将公式复制200遍,达到每10个1求和的结果。
解答:=IF(MOD(ROW(),10)<>0,"",SUM(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN(),)),,-1,-10,)))
028.一列中删除重复数据的方法
例如在C2:C500中有重复数据。在D2中 =COUNTIF(C2:$C$100,C2) 计算出 C2在此列中的出现次数,然后复制公式到整列,最后删除在D列中大于1的行即可.
029.哪为大侠来帮忙关于VBA的问题
小弟想同时对excel工作簿下的几个工作表进行插入图表的操作!这几个工作表中已经在相同的位置区域内输入了数据. 语言如下: 运行显示 "下表越界" (下划线的地方)。请问高手又什么办法解决,或者可以用其它的方法。
sub biaoge()
for a = 1 to 3
sheets("sheet(a)").select
charts.add
activechart.applycustomtype charttype:=xlbuiltin, typename:="两轴线-柱图"
activechart.setsourcedata source:=sheets("sheet (a)").range("a1:j3"), plotby:=xlrows
activechart.location where:=xllocationasobject, name:="sheet(a)" activechart.hasdatatable = true
activechart.datatable.showlegendkey = true
activechart.legend.select
selection.delete
next a
end sub
解答:sheets("sheet(a)").select是错的。可以用sheets("Sheet_Name").select。
029.比较大小
例如512.03,我用函数取了这个数的最后两个数03用他与10比较,结果总是显示03>10,不知道是什么原因,请高手指点,谢谢!!!
解答:取后两位数结果是文本型,对比可用right(a1,2)*1>10或者用:value(right(a1,2))>10也可
030.讨论:用RANGE和CELLS选择单元格
EXCEL的基本元素就是单元格,第一步就是要学会操作单元格了,列举两种方式。
SUB RANGE() ‘用RANGE选择B5单元格
RANGE(“B5”).SELECT
END SUB
SUB CELLS() ‘用CELLS选择B5单元格
CELLS(5,2).SELECT
END SUB
RANGE编程时无法变化,CELLS可以通过变量选择单元格。
回应1:RANGE 一样方便, 甚至更方便. 实际使用中可以用一变量
srArea="B" & i
RANGE(srArea).SELECT
srArea="金额" ' 一命名为金额 的单元格/区域
RANGE(srArea).SELECT
回应2:我觉得各有长处,如果有变量需要循环判断,用Cells相对比较简单,但是有时候固定区域的,命名后用Range更灵活。
回应3:没错. 帮助中也是推荐 CELL 的.
灵活性来讲, RANGE 要强多了, 而且使用时可以通过 . 提取符快速读取它的属性和方法.
另外, 对于可变更的工作表, 用 RANGE 来操作命名区域将增加程序的弹性.
比如工作中插入一行/列, VBA 中用 CELL 就可能导致运行操作错误, 而 RANGE(srArea) 作为指定区域, 可适应单元格的这类变更.
031.关于FileSystemObject的引用
请问各路高手,有人可以为我指点一下filesystemobject引用的详细说明,特别是fileexists方法的实例。
解答:Sub testing()
'先判断文件是否存在,是则删除之
Dim strmyfile As String
strmyfile = "d:\book1.xls"
If filetoFind(strmyfile) Then
Kill strmyfile
End If
End Sub
Function filetoFind(fileName As String) As Boolean
Dim fsobj As Object
Set fsobj = CreateObject("Scripting.FileSystemObject")
If fsobj.fileexists(fileName) Then
filetoFind = True
End If
End Function
在帮助文件中是这样描述的:FileSystemObject 对象
描述:提供对计算机文件系统的访问。
语法:Scripting.FileSystemObject
说明:下面的代码举例说明了如何使用 FileSystemObject 返回一个 TextStream 对象,该对象是可读并可写的:
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
在上面列出的代码中,CreateObject 函数返回 FileSystemObject (fs)。CreateTextFile 方法接着创建文件作为一个 TextStream 对象(a),而 WriteLine 方法则向创建的文本文件中写入一行文本。Close 方法刷新缓冲区并关闭文件。
FileExists 方法
描述:如果指定的文件存在,返回 True,若不存在,则返回 False。
语法:object.FileExists(filespec)
FileExists 方法语法有如下几部分:
部分 描述:object 必需的。始终是一个 FileSystemObject 的名字。
filespec 必需的。要确定是否存在的文件的名字。如果认为文件不在当前文件夹中,必须提供一个完整的路径说明(绝对的或相对的)。
032.excel时间函数2(菜鸟教程)
这一贴说明时间函数,time,hour,minute,second的用法。
time的计算过程:
time(hour,minute,second),time地返回值为0-0.99999999之间的数值,它的计算方法如下:
hour的范围:0-24
minute的范围:0-59
second的范围:0-59
在满足以上输入范围的时候:time(hour,minute,second)=hour/24+minute/(24*60)+second/(24*60*60)。
如:tiem(05,34,29)=0.232280092592593.如何计算的呢?
5/24+34/(24*60)+29/(24*60*60)=0.208333333333333+0.0236111111111111
+0.000335648148148148=0.232280092592593。
在帮助文件里还有hour,minute,second不再范围情况,这时候,如何计算的呢?
1、second/60,除的整数为minute,mod(second,60)为second
2、minute/60,除的整数为hour,mod(minute,60)为minute
3、hour/24,mod(hour,24)为hour
最后再用hour/24+minute/(24*60)+second/(24*60*60)计算。
帮助中的例子:time(0,0,2000)=0.023148如何算的呢?
2000/60=33 mod(2000,60)=20
time(0,0,2000)=time(0,33,20)=0/24+33/(24*60)=20/(24*60*60)=0.023148
呵呵,其实没有什么用,会用这个函数就可以可,如何算的就不必在意了!!!
033.年月日的问题
EXCEL表格中年月有时候输入不对,(早已记录过大量数据,改写麻烦。)比如198001,意思是1980年1月,可是设置单元格式日期只有年月日,没有年月。怎么做?
解答:插入一辅助列,假设198001在E1,F=IF(MID(E1,5,1)="0",LEFT(E1,4)&"年"&RIGHT(E1,1)&"月",LEFT(E1,4)&"年"&RIGHT(E1,2)&"月")
试一下。
又问:198001能否改为1980-1?或者1980年1月改为1980-1?
解答:f1=IF(MID(e1,5,1)="0",LEFT(e1,4)&"-"&RIGHT(e1,1),LEFT(e1,4)&"-"&RIGHT(e1,2))
或者更简单一些:=LEFT(A6,4)&"-"&value(RIGHT(A6,2))(数据在a6单元格)
也可以这样:=date(mid(e1,1,4),mdi(e1,5,2),1)这样会显示为1980-1-1,然后可以随意设置成相应的日期格式。
034.请帮忙解释一个公式
=LEFT(A1,(SEARCHB("?",A1)-1)/2)这是我在站内过去的帖子里看到的一个公式,用于提取前文后数中的文字部分,非常好用。请教这个公式中最后两步的意义是什么?另外,当A1是“1234个”的格式时,当如何提取其中的文字呢?
解答:1、公式的含义是:查找第一个半角字符出现的位置[SEARCHB("?",A1)],减去1后除以2,就是文字的字符数目,将其提取出来。
2、=RIGHT(A1,LENB(A1)-LEN(A1))
035.关于宏和程序
我现在已经用excel编了一个较完整的程序,并且能够给源程序加密码,实现"工程不可见",但是我发现在vba编辑环境里还能看到我的大部分宏,虽然说不能编辑,但能运行,请问如何隐藏起来。
解答:不用模块函数,重写成类或放到workbook中,或在程序中直接将菜单宏隐藏。或者:新建类,然后将模块中的程序拷贝到类,提示:找不到宏。
又问:我现在已经能做到屏蔽调alt+F11键了,虽然不能看到我的宏程序,但是依然可以运行我的宏,请高手做答,如何隐藏起我的宏。
解答:在宏的声明前加Private。
036.请教多条件求和的问题
大家好,我是个新手,想向大家请教指定多条件求和的函数公式。
譬如,有一张工作表有4列标题:品名,数量,日期,签收人。
若我想求,符合条件为:品名为A,日期为Y,签收人为B的数量之和。
该用那个函数公式?
解答:=IF(A2="a",IF(B2="03.10.22",COUNTIF(D:D,D2),"时间无"),"无")
A列品名,B列日期,C列数量,D列签收人用if 嵌套。
或者:数组公式
{=sum((a1:a100=品名)*(c1:c100=日期)(d1:d100=签收人)*(B1:B100))}
也可以:{=SUM((($A$1:$A$100)="a")*(($B$1:$B$100)="03.10.22"))}
037.请教关于星期的计算?
如何通过输入一个日期:2003-10-20即可得到该天在本年度的第几个星期?
解答:使用 WEEKNUM 函数。
如:=WEEKNUM(A1)
=WEEKNUM(TODAY())
或者:日期在a1
=INT((A1-DATE(YEAR(A1),1,0)+WEEKDAY(DATE(YEAR(A1),1,0),1)+7-WEEKDAY(A1,1))/7)
也可以用VBA:
'under the iso standard, a week always begins on a monday, and ends on a sunday.
'the first week of a year is that week which contains the first thursday of the year,
'or, equivalently, contains jan-4.
'
public function isoweeknum(anydate as date, _
optional whichformat as variant) as integer
'
' whichformat: missing or <> 2 then returns week number,
' = 2 then yyww
'
dim thisyear as integer
dim previousyearstart as date
dim thisyearstart as date
dim nextyearstart as date
dim yearnum as integer
thisyear = year(anydate)
thisyearstart = yearstart(thisyear)
previousyearstart = yearstart(thisyear - 1)
nextyearstart = yearstart(thisyear + 1)
select case anydate
case is >= nextyearstart
isoweeknum = (anydate - nextyearstart) \ 7 + 1
yearnum = year(anydate) + 1
case is < thisyearstart
isoweeknum = (anydate - previousyearstart) \ 7 + 1
yearnum = year(anydate) - 1
case else
isoweeknum = (anydate - thisyearstart) \ 7 + 1
yearnum = year(anydate)
end select
if ismissing(whichformat) then
exit function
end if
if whichformat = 2 then
isoweeknum = cint(format(right(yearnum, 2), "00") & _
format(isoweeknum, "00"))
end if
end function
public function yearstart(whichyear as integer) as date
dim weekday as integer
dim newyear as date
newyear = dateserial(whichyear, 1, 1)
weekday = (newyear - 2) mod 7
if weekday < 4 then
yearstart = newyear - weekday
else
yearstart = newyear - weekday + 7
end if
end function
038.请教日期的转换问题
我的程序里有这样一段代码:
Dim str As Date
str=now
Sheet1.Cells(1, "A") = str
运行后在单元格里显示
2003/11/13 15:19:45
但我想让它显示成如下的格式:
2003年11月13日(小时,分,秒去掉)
我用year(str)想单独取得年的值,但显示1905/06/25 0:00:00
请问有什么好的方法可以实现这种转换吗?
解答:
Dim str As Date
str=now
Sheet1.Cells(1, "A") = format(str,"yyyy年mm月dd日")
039.如何用vba实现删除最右边的字符
1月、2月、3月...........10月、11月、12月
请问如何用vba实现把“月”删除只提取:1、2、3.......10、11、12。
解答:Sub abc()
Dim a As Integer
Dim b As String
Dim c As String
c = ""
For a = 1 To Len(b)
c = c & IIf(Mid(b, a, 1) <> "月", Mid(b, a, 1), "")
Next
MsgBox c
End Sub
或者:
A1= 1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月
[A1] = Application.WorksheetFunction.Substitute([A1], "月", "")
040.请问如何定义相对定位的名称
我想定义一个各个工作表(一个工作薄内)使用的名称。该名称为相对定位,
如我在sheet1表的B2中该名称是 sheet1 表的A2,我在sheet2表的B2中时该名称是sheet2表的A2单元格,可我在定义名称时它总是加上工作表名。
解答:=offset(indirect(address(row(),column(),)),,-1,,)
041.请问如何替换?
有很多条这样的记录:******(212),****(315),*********(658)。如何只保留括号里的数字,*号是汉字。
解答:设数据在A30单元格 =MID(A30,FIND("(",A30)+1,LEN(A30)-FIND("(",A30)-1)
IF 你的数据都是要求记录中最后面的三码数字
可以试着用简单的方式解决
=RIGHT(A1,3)
又问:我是要合并,你却要拆分!你能告诉我怎样将两列:即“数字列”和“文字列”合并成一列?
解答:试试这个:
Sub Join() '将选择的行几个单元格数值合并到一列的一个单元格
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next
Dim iRows As Long, mRow As Long, ir As Long, ic As Long
iRows = Selection.Rows.Count
Set lastcell = Cells.SpecialCells(xlLastCell)
mRow = lastcell.Row
If mRow < iRows Then iRows = mRow 'not best but better than nothing
iCols = Selection.Columns.Count
For ir = 1 To iRows
newcell = Trim(Selection.Item(ir, 1).value)
For ic = 2 To iCols
trimmed = Trim(Selection.Item(ir, ic).value)
If Len(trimmed) <> 0 Then newcell = newcell & " " & trimmed
Selection.Item(ir, ic) = ""
Next ic
Selection.Item(ir, 1).value = newcell
Next ir
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
042.求教合并单元格区域的连续读取方法
求教:1、如何选定连续的合并单元格区域;2、如何连续读取合并单元格中的内容。
解答:Public Sub adre()
Dim cell As Range
Dim iRow_dn1 As Integer
iRow_dn1 = [B65536].End(xlUp).Row
Set av1 = Range("B3:B" & iRow_dn1)
For Each cell In av1
If cell <> "" Then
MsgBox cell.Address & " 等於 " & " ※ " & cell & " §"
End If
Next
End Sub
043.求一公式
sheet1 sheet2
A B C A B C
1 产品代码产品名 生产机器名 产品代码 产品名 生产机器名
2 012354 a203 1m炉 225894 nj033 ?
3 214345 b4032 发泡炉 056894 kkl001 ?
4 225894 nj033 1m炉 214345 b4032 ?
5 056894 kkl001 发泡炉
6 124589 lli002 1m炉
SHEET1是一张源资料表,而SHEET2是一个生产计划表的一部分。
请问:
我求SHEET2中的A列中产品代码相对应的C列的”生产机器名“。
这个公式怎么写?
解答:Sheet2的C2格公式为:=VLOOKUP($A2,SHEET1!A:C,3,0)
044.讨论一下取最后一个单词的方法
例如现在在A1中有一句“M. Henry Jackey”,如何用函数将最后的一个单词取出来呢? 当然,我们现在是知道最后的单词是6个字符,可以用Right(A1,6)来计算,但如果最后一个单词的字符数是不定的呢,如果做呢? 请大家试下有几种方法。
解答:方法1、用一列公式填充
=IF(LEFT(RIGHT($A$1,ROW()),1)=CHAR(32),RIGHT($A$1,ROW()-1),“”)
方法2、=MID(A1,FIND(" *",SUBSTITUTE(A1," "," *",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)-FIND(" ",A1))
方法3、用自定义函数当然方便,而且简单。
Function xx(n As String) As String
n = Application.Trim(n)
lastone = Right(n, Len(n) - InStrRev(n, " "))
xx = lastone
End Function
方法4、=IF(ISERROR(SEARCH("",TRIM(LEFT(B1)))),RIGHT($A$1,ROW()),"")拖出来的第一个字符就行。
方法5、{=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=" ")*ROW(INDIRECT("1:"&LEN(A1)))))}
嫌长就(假定最长100字符)
{=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(1:100),1)=" ")*ROW(1:100)))}
045.如何获取工作表中某一列有多少条记录?
因为每一列的的记录都不一样多,所以我想获得每一列各有多少条记录,怎么做?
解答:RecordNumbers=Application.COUNTA(A:A)
或者:Private Sub UserForm_Activate()
x = Sheet1.UsedRange.Rows.Count
x1 = Sheet1.CountA(c4, cx)
也可以:Sub aa()
MsgBox (Application.CountA(Range("A:A")))
End Sub
还可以:Sub aa()
x = Sheet1.UsedRange.Rows.Count
MsgBox (Application.CountA(Range("c3:cx")))
End Sub
这样也行:用下面的方法可测出任一列使用的行数
a=Sheet1.range("b1").End(xlDown).Row。
总结:
1.Sub aa()
MsgBox (Application.CountA(Range("C:C")))
End Sub
结果永远都是1或者3,可是实际上记录有600多条
2.
Sub aa()
Worksheets("sheet1").Activate
Range("c2").Select
x1 = "=COUNTA(sheet1!C)"
MsgBox x1
End Sub
这个是看fhj 示例的文件录制成宏改的,不过运行结果永远是 =counta(sheet1!c)
3.
Sub aa()
x1 = "=COUNTA(sheet1!C)"
MsgBox x1
end sub
提示和前面的一样。
4.其实已经试了几十种方法了。还是错的。作为公式时,是可以使用。但是却
无法把获得的值赋值给一个变量。除非是先写到一个单元格里,再重新读出来。
不过我觉得太麻烦了。而且写的时候会修改工作表。不是很恰当。
解答:Application.CountA(Range("C:C"))返回除去无值单元格的所有单元格的数量。
Sheet1.range("C1").End(xlDown).Row返回第一次遇到空单元格前的单元格的数量。
(注:当C列有空白单元格时用:
myEndRow=sheets("sheet1").range("C65536").End(xlUp).row)
结论:Sub aa()
x1 = Sheet1.Range("C3").End(xlDown).Row
MsgBox x1
end sub
这就对了。谢谢各位!
回应:推荐你用
Columns(1).SpecialCells(xlCellTypeConstants).Count
045.如何禁止输入空格
在Excel中如何通过编辑“有效数据”来禁止录入空格?烦请大侠们费心解答。不胜感激。
解答:有效性公式。=COUNTIF(A1,"* *")=0
(注:COUNTIF(A1,"* *") 在单元格有空格时结果为1,没有空格时结果为0
如希望第一位不能输入空格:countif(a1," *")=0
如希望最后一位不能输入空格:countif(a1,"* ")=0)
046.如何判断单元格中单词的数量?
比如我在A1中输入“you are a good boy”如何判断单词为5个?
解答:=LEN(E12)-LEN(SUBSTITUTE(E12," ",""))+1
(注:方法很巧妙用trim把前后的空格去掉。如果有标点符号或者两个词之间的空格数大于1个就不好办了)
047.如何取数
表一有数据,要求表二中数据为取一行表一数据,空一行。
解答:
Sub test()
On Error Resume Next
Application.ScreenUpdating = False
For i = 1 To Sheets(1).UsedRange.Rows.Count
Sheets(1).Rows(VBA.Trim(VBA.Str(i)) + ":" + VBA.Trim(VBA.Str(i))).Copy
Sheets(2).Activate
Sheets(2).Rows(VBA.Trim(VBA.Str(i * 2 - 1)) + ":" + VBA.Trim(VBA.Str(i * 2 - 1))).Select
ActiveSheet.Paste
Next i
Application.ScreenUpdating = True
End Sub
048.如何通过VBA编程将符合条件的数据库记录输入到EXCEL中
现在有access格式的数据表 TEST
货号 货名 规格 单价....
1-01 货品1 1M 250.00
1-02 货品2 4Kg 100.00
................
N-99 货品N 999 999.99
现在我想在EXCEL的单元格中输入货号,通过VBA代码自动从数据表中查找出相应的记录,并在相邻的列分别自动录入货品、规格、单价等内容,从而实现EXCEL自动数据录入。请问这VBA代码应如何写?谢谢!
解答:Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rs As New ADODB.Recordset
Dim Query As String
Dim Cnn As String
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Cnn = "Driver=Microsoft Access Driver (*.mdb);DBQ=C:\*.mdb"
Query = "SELECT * FROM TEXT WHERE 货号='" & Target & "'"
With Rs
.Open Query, Cnn, adOpenStatic, adLockReadOnly
If .RecordCount = 0 Then
MsgBox "没有此货号!"
Target.ClearContents
Else
Target.CopyFromRecordset Rs
End If
.Close
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
049.如何统计一个单元格中的数字有几位数?
解答1:=LEN(单元格地址)
又问:如果中间有汉字或者是字母、符号呢,或是数者都有呢?
解答2:=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))
解答3:=2*LEN(A1)-LENB(A1)
(备注:對中文 + 數字是很好的做法,但有英文字 或 中文 + 數字 + 英文就出錯)
050.如何選取列內不重複資料
解答1:Sub ff()
Dim aa As New Collection
cc = 2
On Error Resume Next
Do Until Cells(3, cc) = ""
aa.Add Cells(3, cc).value, Cells(3, cc).Text
cc = cc + 1
Loop
On Error GoTo 0
cc = 2
For Each itm In aa
Cells(5, cc) = itm
cc = cc + 1
Next
End Sub
解答2:提供一個以陣列方法為思考模式的方法
Sub ff()
On Error Resume Next
cc = 2
Set NoDupes = CreateObject("Scripting.Dictionary")
Do Until Cells(3, cc) = ""
NoDupes.Add Cells(3, cc).value, Cells(3, cc).value
cc = cc + 1
Loop
Range("B6").Resize(1, UBound(NoDupes.keys) + 1) = NoDupes.keys '陣列由0開始,所以+1
End Sub