75,、我們?nèi)粘I纤?、下發(fā)的報(bào)表材料、通知等都要加蓋公章,,如果把這項(xiàng)工作交給Excel或Word來(lái)完成,,我們的工作就輕松多了。 第一步:制作公章圖案 首先我們要做出一個(gè)公章的圖案,,最簡(jiǎn)單的辦法是把公章圖案掃描到電腦中,,然后處理成透明的GIF圖像,。我們也可以直接用Excel來(lái)制作:把繪圖工具打開(kāi),選中“橢圓”工具,,在按下“Shift”鍵的同時(shí)拖開(kāi)鼠標(biāo),,就可以得到一個(gè)正圓了。雙擊這個(gè)正圓打開(kāi)“設(shè)置自選圖形格式”對(duì)話框,,在“顏色與線條”標(biāo)簽中,,填充顏色選“無(wú)填充顏色”,線條顏色設(shè)為紅色,,選3磅粗的單線形(圖),。公章的文字用藝術(shù)字來(lái)制作,填充顏色和線條顏色都用紅色,,并設(shè)成無(wú)陰影產(chǎn),。弧形文字和水平文字要分開(kāi)來(lái)做,,在做弧形文字時(shí),,把藝術(shù)字拖到圓形的上方,在藝術(shù)字工具中選“藝術(shù)字形狀-細(xì)上彎弧”,,按住黃色的四方塊往下拉,,再作適當(dāng)?shù)恼{(diào)整,就可以做出公章里的圓弧形的文字了,。公章中間還有一個(gè)紅五星,,用“自選圖形”的星形就可以做出來(lái)了,填充顏色和線條顏色用紅色,。最后,,按住“Shift”鍵把組成公章的文字、圖形全部選上,,執(zhí)行右鍵菜單中的“組合”命令,,一個(gè)公章就做好了。 如何把做好的公章保存出來(lái),?這里有一方法:把工作表另存為Web頁(yè),,然后到保存目錄中找到*.files的文件夾,里面有一個(gè)GIF圖片,,這就是剛才做好的公章圖案了,,它的背景是透明的,我們把它改名為gongzhang.gif保存下來(lái)即可,。 第二步:添加“蓋章”按鈕 接下來(lái)我們給Excel添加一個(gè)蓋章按鈕,,當(dāng)一個(gè)工作表做好后,點(diǎn)擊這個(gè)蓋章按鈕,就可以為我們蓋上公章了,。 先把公章圖形復(fù)制出來(lái)(用來(lái)粘貼作為按鈕的圖標(biāo)),,然后打開(kāi)“工具-自定義”對(duì)話框,選中“命令”標(biāo)簽,,在“類別”欄中找到“宏”,,在右邊的“命令”欄里就會(huì)出現(xiàn)一項(xiàng)“自定義按鈕”。用鼠標(biāo)把這個(gè)笑臉圖標(biāo)拖出到菜單欄或工具欄上放下,,在笑臉圖標(biāo)上擊右鍵,,在彈出的菜單中把“命名”處的文字改為“加蓋公章”。接下來(lái)點(diǎn)擊“粘貼按鈕圖標(biāo)”這個(gè)命令,,就可以用剛和復(fù)制的公章圖形來(lái)代替笑臉圖標(biāo)了,。把鼠標(biāo)移下來(lái)選中“分配超級(jí)鏈接-插入圖片”,然后在“請(qǐng)鍵入文件名稱或Web頁(yè)名稱”欄里輸入公章圖片gongzhang.gif的文件名及路徑,,然后按“確定”返回,。 好了,看到“加蓋公章”這個(gè)按鈕了吧,,點(diǎn)擊一下看看,,呵呵,頁(yè)面上就蓋上一個(gè)鮮紅的公章了,,用鼠標(biāo)可以把它拖到任意的地方,。在Word文檔中加蓋公章的方法與此大同小異,大家可以自己試一試,。 76,、如何使某一個(gè)固定的菜單項(xiàng)無(wú)效 Application.CommandBars("File").Controls(6).Enabled = False Controls(6)中的6就是所在菜單欄的行數(shù) 我覺(jué)得這樣可能更可靠: 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、請(qǐng)教大家,,我想在EXCEL文件退出時(shí),,另存為當(dāng)前目錄下的子目錄BAK中,比如EXCEL文件在C盤,,就另存為C:\BAK子目錄下,,但EXCEL文件的位置不確定,不知如何寫語(yǔ)句,? 注意先引用"Microsoft Scripting Runtime" Private Sub Workbook_BeforeClose(Cancel As Boolean) ' 在本文件要關(guān)閉前,,執(zhí)行備份動(dòng)作。 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" '檢查備份文件夾是否存在,若不存在,,就建立一個(gè),。 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 ' 避免執(zhí)行BeforeSave事件,。 Application.DisplayAlerts = False ' 避免顯示是否要覆蓋原備份文件之訊息。 ActiveWorkbook.SaveAs ChDir ThisPath ' 改變目前路徑回到原文件夾路徑,。 Application.DisplayAlerts = True Application.EnableEvents = True End Sub 上述程式有個(gè)漏洞,,就是在本文件做過(guò)更動(dòng),且存檔過(guò)了,,但最後一次的更動(dòng)未存檔,,則 If Not ActiveWorkbook.Saved Then Exit Sub 這個(gè)判斷會(huì)造成不存?zhèn)浞輽n之錯(cuò)誤決定。 若想彌補(bǔ)上述錯(cuò)誤,,將觸發(fā)的事件改成Workbook_BeforeSave,,卻會(huì)造成Excel關(guān)閉的錯(cuò)誤。 78,、文件保存為以某一單元格中的值為文件名的宏怎么寫 用命令: ActiveWorkbook.SaveCopyAs Str(Range("Sheet1!A1")) + ".xls" 79,、Offset 屬性 參閱應(yīng)用于示例特性應(yīng)用于 Range 對(duì)象的 Offset 屬性。 返回一個(gè) Range 對(duì)象,,該對(duì)象代表某個(gè)指定區(qū)域以外的區(qū)域,。只讀。 expression.Offset(RowOffset, ColumnOffset) expression 必需,。該表達(dá)式返回一個(gè) Range 對(duì)象,。 RowOffset Variant 類型,可選,。區(qū)域偏移的行數(shù)(正值,、負(fù)值或 0(零))。正值表示向下偏移,,負(fù)值表示向上偏移,,默認(rèn)值為 0。 ColumnOffset Variant 類型,,可選,。區(qū)域偏移的列數(shù)(正值、負(fù)值或 0(零)),。正值表示向右偏移,,負(fù)值表示向左偏移,默認(rèn)值為 0。 應(yīng)用于 TickLabels 對(duì)象的 Offset 屬性,。 返回或設(shè)置各級(jí)別標(biāo)簽之間的距離以及第一級(jí)標(biāo)簽與坐標(biāo)軸之間的距離,。其默認(rèn)距離為百分之百,代表坐標(biāo)軸標(biāo)簽與坐標(biāo)軸之間的默認(rèn)距離,。其值可以為從 0 到 1000 之間的一個(gè)整數(shù)百分比,,表示相對(duì)于坐標(biāo)軸標(biāo)簽的字體大小。Long 類型,,可讀寫,。 expression.Offset expression 必需。該表達(dá)式返回一個(gè) TickLabels 對(duì)象,。 示例 應(yīng)用于 Range 對(duì)象,。 本示例激活 Sheet1 上活動(dòng)單元格向右偏移三列、向下偏移三行處的單元格,。 Worksheets("Sheet1").Activate ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate 本示例假定 Sheet1 中包含一個(gè)具有標(biāo)題行的表格,。本示例先選定該表格,但并不選擇標(biāo)題行,。運(yùn)行本示例之前,,活動(dòng)單元格必須位于表格中。 Set tbl = ActiveCell.CurrentRegion tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _ tbl.Columns.Count).Select 應(yīng)用于 TickLabels 對(duì)象,。 如果偏移量小于 500,,則本示例將 Chart1 中數(shù)值軸上標(biāo)簽之間的距離設(shè)置為當(dāng)前距離的兩倍。 With Charts("Chart1").Axes(xlValue).TickLabels If .Offset < 500 then .Offset = .Offset * 2 End If End With 80,、新建工作簿 參閱特性若要在 Visual Basic 中創(chuàng)建新的工作簿,,請(qǐng)使用 Add 方法。下述過(guò)程創(chuàng)建了新的工作簿,。Microsoft Excel 自動(dòng)將該工作簿命名為“BookN”,,其中“N”是下一個(gè)可用的數(shù)字。新工作簿將成為活動(dòng)工作簿,。 Sub AddOne() Workbooks.Add End Sub 創(chuàng)建新工作簿更好的方法是將其分配給一個(gè)對(duì)象變量,。下例中,由 Add 方法返回的 Workbook 對(duì)象分配給了對(duì)象變量 newBook,。然后,,又設(shè)置了 newBook 的若干屬性。使用對(duì)象變量可以很容易地控制新工作簿,。 Sub AddNew() Set NewBook = Workbooks.Add With NewBook .Title = "All Sales" .Subject = "Sales" .SaveAs Filename:="Allsales.xls" End With End Sub 81,、Rem:將活動(dòng)單元格從A5移到A6,并將A6單元格的數(shù)值保存到x變量中 range("A5 ").select此命令就是選擇A5單元格 Activecell.offset(1,0).select X=activecell.value 82,、用代碼窗口中可用F8運(yùn)行宏,,Alt+F8顯示宏對(duì)話框,,Alt+F11可以打開(kāi)VBE編輯器 83、Option Explicit 在程序代碼前使用該命令,,則變量要在聲明后才能使用,否則編譯程序無(wú)法識(shí)別該變量,,從而產(chǎn)生錯(cuò)誤信息 84,、Load語(yǔ)句用于加載窗體,加載后將占用內(nèi)存,,Hide方法使窗體隱藏,,但仍在內(nèi)存中,故不再使用窗體時(shí)應(yīng)使用Uuload語(yǔ)句及時(shí)卸載,,將內(nèi)存交還系統(tǒng),,Show方法用來(lái)顯示一個(gè)窗體,格式: 窗體名稱.show 模式,,模式可取0或1,,為1時(shí),不能到其他窗體操作,,只有關(guān)閉該窗體后才能對(duì)其他窗體操作 85,、控件的命名規(guī)則,通常使用3個(gè)字母的前綴命名控件,,如Label的前綴為lbl,初學(xué)者最好養(yǎng)成良好的命名習(xí)慣 86,、按下Ctrl+Enter鍵單元格不移動(dòng)。 87,、按下F2鍵直接在單元格內(nèi)編輯,,不需動(dòng)鼠標(biāo) 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是計(jì)時(shí)器,功能是按指定時(shí)間間隔產(chǎn)生定時(shí)事件 91、在一個(gè)語(yǔ)句要分行顯示的地方加一個(gè)或多個(gè)空格,,加一個(gè)下劃線_然后回車轉(zhuǎn)入下一物理行,,作用在于代碼一行寫不下時(shí)續(xù)行,程序代碼中一行較短時(shí)可加:把多行連成一行顯示 92,、if a>15 then b=10 else b=100 end if 可改為如下if語(yǔ)句 b=iif(a.15,10,100) 93,、F12用于啟動(dòng)另存為對(duì)話框 94、x=shell(calc.exe,1)可打開(kāi)計(jì)算器程序 95,、call語(yǔ)句格式:Call<子過(guò)程名>[(<實(shí)際參數(shù)表>)]如果過(guò)程本身沒(méi)有參數(shù),,則實(shí)參和括號(hào)可省略,并報(bào)參數(shù)放在括號(hào)中,,另一個(gè)調(diào)用Sub過(guò)程的方法是: <子過(guò)程名>[<實(shí)際參數(shù)表>]比前一個(gè)少了Call和括號(hào),,子過(guò)程調(diào)用語(yǔ)句的實(shí)參在數(shù)目,、類型、排列上與子過(guò)程定義語(yǔ)句的形式參數(shù)表一致 96,、自定義函數(shù)一例,求abc三個(gè)數(shù)的平均 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 在定義時(shí)必須向函數(shù)過(guò)程名賦值,,而子程序名不能賦值 97、在工作表任意單元格輸入=Cell("filename")可獲得文件的完整路徑,、文件名和工作表名 98,、在打開(kāi)Excel文件時(shí)按住Shift鍵,將不運(yùn)行VBA過(guò)程,,可防止宏病毒,,單擊文件 關(guān)閉命令,在點(diǎn)關(guān)閉時(shí)按住Shift鍵將在不運(yùn)行VBA過(guò)程的情況下關(guān)閉工作簿,,可防止關(guān)閉時(shí)自動(dòng)運(yùn)行的宏病毒,。 99、讓一個(gè)變量得到單元格A1到A5的總和(變量設(shè)為X), X=Sum(Range(“A1:A5”)) 錯(cuò) X=Application.WorksheetFunction.Sum(Range(“A1:A5”))正確 也就是說(shuō)必須通過(guò)Application的WorksheetFunction屬性間接調(diào)用工作表函數(shù) 100,、Rem和'是注釋符,,注釋語(yǔ)句是非執(zhí)行語(yǔ)句,要養(yǎng)成對(duì)代碼注釋的習(xí)慣,。 101,、ActiveSheet.Next.Select選擇活動(dòng)工作表下一張工作表, ActiveSheet.Previous.Select選上一張 102,、單元格B2:B10數(shù)值不全為空用IF語(yǔ)句表達(dá) For Each cl in ActiveSheet.Range("B2:B10") If cl.Value <> "" then msgbox "有非空單元格" Exit For endif next 103,、用Range引用單元格和單元格區(qū)域 Range("A1") 單元格A1 Range("A1:B5") 從單元格A1到B5區(qū)域 Range("A1:B5 ,B1:B7") 多塊的選定區(qū)域 Range("A:A") A列 Range("1:1") 第一行 Range("A:C") A列到C列的區(qū)域 Range("1:5") 第1行到第5行的區(qū)域 Range("1:1,3:3") 第1、行 Range("A:A,C:C") A列,、C列 104,、用Cells及編號(hào)引用單元格 Cells(6,1)A6單元格 如果對(duì)工作表用Cells屬性時(shí)不指定索引,表示引用工作表上的所有單元格,,下例清除活動(dòng)工作簿中工作表Sheet1上所有單元格的內(nèi)容 Worksheets(“sheet1”).Cells.ClearContents 105,、可用變量代入單元格索引值,故Cells屬性非常適用于在單元格區(qū)域中循環(huán),,如: 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、可用方括號(hào)將A1樣式的引用或命名區(qū)域的名稱括起來(lái),,作為Range屬性的快捷方式,,這樣就不必鍵入Range 和引號(hào),如 Worksheets(“sheet1”).[A1:B2].clearContents .Value=30 107,、用Offset處理按相對(duì)于其他單元格的某一位置的常用辦法是使用Offset屬性,,本例將活動(dòng)工作表上活動(dòng)單元格下一行和右邊三列的單元格的內(nèi)容設(shè)置為下劃線,如: ActiveCell.Offset(1,3).font.Underline=XlDouble 108,、把別的工作表Sheet2數(shù)據(jù),,讀到當(dāng)前工作表的方法列舉 1)[A1]=Sheet2.[A1] 把Sheet2A1單元格的數(shù)據(jù),,讀到A1單元格 2)[A2:A4]=Sheet2.[B1] 把Sheet2單元格B1的數(shù)據(jù)讀到A2:到A4單元格 3)Range(B1”)=Sheet2.Range(“B1”) 把Sheet2工作表單元格B1數(shù)據(jù),讀到B1單元格 4)Range(“C1:C3”)=Sheet2.Range(“C1”) 把Sheet2工作表單元格C1數(shù)據(jù),,讀到C1:C3 5)Cells(1,4)=Sheet2Cells(1,4) 把Sheet2工作表單元格D1數(shù)據(jù),,讀到D1 單元格 6)Range(Cells(1,5),Cells(5,5)=Sheet2.Cells(1,5) 把sheet2工作表單元格E1數(shù)據(jù),讀到E1:E5單元格 7)Selection.Value=Sheet2.[F1] 把Sheet2 工作表單元格[F1]數(shù)據(jù),,讀到任何你點(diǎn)選的單元格 109,、Sub前有個(gè)Private表示是私有子程序,這個(gè)子程序不會(huì)出現(xiàn)在“宏”對(duì)話框中 110,、Sub test() ActiveSheet.Calculate End Sub重算活動(dòng)工作表 111、編程前應(yīng)該盡可能地多了解Excel對(duì)象的屬性,、方法 112,、每一個(gè)Excel對(duì)象的屬性、方法的調(diào)用都要通過(guò)OLE連接的一個(gè)或多個(gè)調(diào)用,,這些OLE調(diào)用都是需要時(shí)間的,,減少使用對(duì)象引用能加快VBA代碼的運(yùn)行 113、使用With語(yǔ)句 Workbooks(1).Sheets(1).Range(“A1:A1000”).font.Name=”Pay” Workbooks(1).Sheets(1).Range(“A1:A1000”).Font.Fontstyle=”Bold”… 改用With語(yǔ)句則運(yùn)行速度加快 例:With Workbooks(1).Sheets(1).Range(“A1:A1000”).font .Name=”Pay” .Fontstyle= Bold” … End With 114,、用set設(shè)置對(duì)象變量,,以減少對(duì)象的訪問(wèn),如: 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運(yùn)行快 115,、在循環(huán)中要盡是減少對(duì)象的訪問(wèn) 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,、減少對(duì)象的激活和選擇 如果你是通過(guò)錄制宏的來(lái)學(xué)習(xí)VBA的程序里一定充滿了對(duì)象的激活和選擇,如Workbooks(XXX).active ,、Sheets(XXX).Select ,、Range(XXX).Select等,但事實(shí)上大多數(shù)情況下這些操作不是必須的,,如 Sheets(“sheet1”).Select Range(“A1”).Value=100 Range(“A2”).Value=200 可改為With sheets(“Sheet3”) .Range (“A1”)=100 .Range (“A2”)=200 117,、關(guān)閉屏幕更新是提高運(yùn)行速度的最有效的辦法,推薦使用 Application.ScreenUpdate=False 程序運(yùn)行后再改回來(lái) 118,、VBA中默認(rèn)的數(shù)據(jù)類型是Variant,,你必須選擇使用何種數(shù)據(jù)類型,因?yàn)閂ariant數(shù)據(jù)類型占用存儲(chǔ)空間較大(16或22字節(jié))而且它將影響程序的性能,,Vba必須識(shí)別Variant類型的變量中存儲(chǔ)了何種數(shù)據(jù)類型,。 119、再列一個(gè)自定義函數(shù)計(jì)算價(jià)格為10%為運(yùn)費(fèi)的簡(jiǎn)單函數(shù)例子 Public Function Shipping(Price) Shipping=Price*0.1 End Function 如還是不懂的話,,將上述過(guò)程復(fù)制到模塊中,,然后在工作表任意單元格中輸入=Shipping(C1)你就會(huì)明白 120、ActiveWindow.DisplyGridlines=False 此句用來(lái)關(guān)閉網(wǎng)格線,。 122,、Private Sub Calendar1_Click() ActiveCell = Me.Calendar1.Value End Sub 123,、設(shè)置日歷控件字號(hào) Private Sub UserForm_Initialize() Me.Calendar1.GridFont.Size = 14 End Sub 124、以下是從金剛金作品里提出來(lái)的部份事件代碼,,做得很好,,值得借鑒學(xué)習(xí): Private Sub Workbook_Activate() MsgBox "工作簿被切換為作用工作簿", vbInformation, "Workbook_Activate" End Sub Private Sub Workbook_AddinInstall() MsgBox "激活新的加載宏時(shí)", vbInformation, "Workbook_AddinInstall" End Sub Private Sub Workbook_AddinUninstall() MsgBox "取消以前選取的加載宏時(shí)", vbInformation, "Workbook_AddinUninstall" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "工作簿被關(guān)閉之前", 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 "工作簿進(jìn)行保存之前", 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 "打開(kāi)工作簿", vbInformation, "Workbook_Open" End Sub Private Sub Workbook_PivotTableCloseConnection(ByVal Target As PivotTable) MsgBox "數(shù)據(jù)透視表關(guān)閉與其數(shù)據(jù)源的連接之后", vbInformation, "Workbook_PivotTableCloseConnection" End Sub Private Sub Workbook_PivotTableOpenConnection(ByVal Target As PivotTable) MsgBox "數(shù)據(jù)透視表打開(kāi)與其數(shù)據(jù)源的連接之后", 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 "任一單元格雙擊鼠標(biāo)之后", vbInformation, "Workbook_SheetBeforeDoubleClick" End Sub Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox "任一單元格單擊鼠標(biāo)右鍵之后", vbInformation, "Workbook_SheetBeforeRightClick" End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) MsgBox "工作表內(nèi)容進(jìn)行重算之后", vbInformation, "Workbook_SheetCalculate" End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) MsgBox "在工作表內(nèi)進(jìn)行不同的操作", 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 "數(shù)據(jù)透視表更新之后", vbInformation, "Workbook_SheetPivotTableUpdate" End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) MsgBox "工作表里選取不同單元格范圍時(shí)", 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 "工作簿被打開(kāi)或窗口最大化、最小化之后", vbInformation, "Workbook_WindowResize" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "選取不同單元格范圍時(shí)", vbInformation, "Worksheet_SelectionChange" End Sub 125,、Rem 選定單元格的個(gè)數(shù) Sub t() MsgBox Selection.Cells.Count End Sub 126,、Application.OnKey "{F11}", "ccc"禁用F11 127、'選中A列除A1外的第一個(gè)非空單元格 [a65536].End(xlUp).Offset(1, 0).Select 128,、Private Sub CommandButton1_Click() On Error GoTo ad '注意后面的ad,,這是錯(cuò)誤處理的用法 i = Range("a1").Value Sheets(CStr(i)).Select ret = MsgBox("是否覆蓋", vbYesNo, "") If ret = vbYes Then Range("A5:C7").Copy Sheets(CStr(i)).Range("A1") '重點(diǎn)在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 '工作表名的變化是可見(jiàn)的 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 下面兩組程序摘自楊開(kāi)科的“我的自學(xué)收集資料”,。我都分別進(jìn)行了試用,,“14、將工作薄中的全部n張工作表都在sheet1中建上鏈接”這段程序試用成功,,但有個(gè)建議:當(dāng)工作表超過(guò)一定數(shù)量時(shí)(例如超過(guò)30張),,第31張則在B列反映,如此類推,。 第二組程序我則沒(méi)有那么幸運(yùn)了,,試用不成功,不知是什么原因,。請(qǐng)指教,! 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 32,、平時(shí)只能看到表1,,如要看表2和表3,只能通過(guò)表1的鏈接打開(kāi),且表2和表3回到表1后,,又不可見(jiàn),。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$3" Then '當(dāng)點(diǎn)擊"$A$3"單元格時(shí)... 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 [ Last edited by 吾識(shí)野 on 2004-9-4 at 12:08 ] 55樓說(shuō) 吾識(shí)野:將下列代碼加入sheet2,sheet3 Private Sub Worksheet_Deactivate() Me.Visible = False End Sub 56樓說(shuō) 向EXE文件里導(dǎo)入數(shù)據(jù)時(shí)出錯(cuò)??? 請(qǐng)幫助解決!,!改日請(qǐng)你吃小酒,! 向EXE文件里導(dǎo)入數(shù)據(jù)時(shí)出錯(cuò)(文件是xls文件編譯的EXE文件)! Sub 導(dǎo)入() Dim Filename Filename = Application.GetOpenFilename(FileFilter:="Excel文件(*.xla; *.xls),*.xla;*.xls", Title:="選擇Excel文檔") '選擇要導(dǎo)入的xls文件 If Filename = False Then Exit Sub Workbooks.Open Filename, Password:=sy '文件名有口令 */可能有錯(cuò)/* Rows("1:350").Select '導(dǎo)入行 Application.CutCopyMode = False Selection.Copy Windows("基層版V2.0").Activate '導(dǎo)入的目標(biāo)文件 *正確 Sheets("SJ").Select '表有 Range("A1").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False ' Workbooks("10401.xls").Close SaveChanges:=False '***要關(guān)閉上面選擇的文件(文件名很多都不同樣)////如何解決,?,?? End Sub Excel基礎(chǔ)應(yīng)用實(shí)例教程 楊開(kāi)科整理 1,、我在單元格中填上“="現(xiàn)在是"&NOW()”,,想顯示目前的時(shí)間,為什么會(huì)變成“今天是38645.6480”,,有什么辦法解決嗎,? 方法1=now()單元格設(shè)置為你想顯示的方式,,如:現(xiàn)在是yyyy年m月d日h點(diǎn)m分。 方法2,、直接用TEXT()函數(shù):=TEXT(NOW(),"現(xiàn)在是yyyy年m月d日h點(diǎn)m分") 第一種方法較好,,可以參與計(jì)算。 =TEXT(NOW(),"現(xiàn)在是 yyyy/mm/dd h:mm AM/PM") 顯示現(xiàn)在是 2005/04/14 4:42 PM 2,、自定義單元格格式 [=0]"男";[=1]"女"; 則可實(shí)現(xiàn)輸入0顯示為“男”,。輸入1顯示為“女”。 3,、excel里面如何添加自定函數(shù)幫助信息呢 在VBE打開(kāi)對(duì)象瀏覽器,,找到自定函數(shù),右鍵——屬性中添加 4,、怎么解決Excel自動(dòng)將0開(kāi)頭的數(shù)字自動(dòng)刪除0,? 是從“獲取外部數(shù)據(jù)”導(dǎo)入的嗎?在第3步可以選擇“列數(shù)據(jù)格式”為文本,,這樣零就不會(huì)被刪除了。 5,、打開(kāi)多個(gè)EXCEL文檔,照理應(yīng)該在狀態(tài)欄顯示多個(gè)打開(kāi)的文檔,,以便各文檔互相切換,但現(xiàn)在只能顯示一個(gè)文檔,,必須關(guān)掉一個(gè)才能顯示另一個(gè),,關(guān)掉一個(gè)再顯示另一個(gè),不知何故? 可以從“窗口”菜單中切換窗口。 或者改回你原來(lái)的樣子:工具/選項(xiàng)/視圖,,選中任務(wù)欄中的窗格,。 6、目的:表中>50000的單元格紅色顯示,。做法:選擇整張表,,在條件格式命令中,設(shè)置了“>50000以紅色填充單元格“的條件,,出現(xiàn)的問(wèn)題:表頭(數(shù)值為文本)的單元格也呈紅色顯示,。我知道,原因是因?yàn)閰^(qū)域選擇得不對(duì),,如果只選擇數(shù)字區(qū)域不會(huì)出現(xiàn)這種情況,,如果表結(jié)構(gòu)簡(jiǎn)單,則好處理,,如果表格結(jié)構(gòu)復(fù)雜,,這樣選擇就很麻煩。有沒(méi)有辦法選擇整張表,,但是表頭(數(shù)值為文本)的單元格不被條件格式,。 答:條件格式設(shè)置公式=--A1>50000 問(wèn)=--A1>50000中的--代表什么意思,, 答:轉(zhuǎn)變?yōu)閿?shù)值.與+0,*1,是一樣的效果。 7,、,、如何打印行號(hào)列標(biāo)? 答:文件菜單-----頁(yè)面設(shè)置---工作表----在打印選項(xiàng)中的行號(hào)列標(biāo)前打勾,。 8,、如何打印不連續(xù)區(qū)域? 答:按CTRL鍵不松,,選取區(qū)域,,再點(diǎn)文件菜單中的打印區(qū)域--設(shè)置打印區(qū)域。 9,、打印時(shí)怎樣自動(dòng)隱去被0除的錯(cuò)誤提示值? 答:頁(yè)面設(shè)置—工作表,,錯(cuò)誤值打印為空白 10、如何設(shè)置A1當(dāng)工作表打印頁(yè)數(shù)為1頁(yè)時(shí),A1=1,打印頁(yè)數(shù)為2頁(yè)時(shí),A2=2,...? 答:插入名稱a=GET.DOCUMENT(50, "Sheet1")&T(NOW()),,在A1輸入=a 11,、Add More Levels of Undo to Excel for Windows 增加excel的后悔次數(shù)!??!excel默認(rèn)的是16次,不信你試試?。,。?br>現(xiàn)在我改成30次,。 到注冊(cè)表(不知道,,在開(kāi)始運(yùn)行里輸入regedit回車即可) 到以下位置!?。,。∥业氖莖ffice2003?。,。?!在11.0處可能有所不同,! [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options] 新建dword值 鍵名為UndoHistory (雙擊名稱)值為10進(jìn)制,輸入數(shù)值為30,。即可 12,、我想在幾千個(gè)數(shù)據(jù)中列出沒(méi)有重復(fù)的數(shù)據(jù) 答:數(shù)據(jù)_篩選_高級(jí)篩選_選擇不重復(fù)記錄。 13、我需要保留一位小數(shù),不管后面是什么數(shù)字,超過(guò)5或不超過(guò)5,都向前進(jìn)一位. 例如:329.99----->330.00 329.84------------>329.90 329.86------------>329.90 答:=roundup(*,2)或=round(a1+0.04,1) 14,、D列為字符型值,,轉(zhuǎn)換為數(shù)型的的值。如何進(jìn)行操作 答: 復(fù)制任一空單元格,。選中D列,,選擇性粘貼,加,。 15,、在Excel中如何輸入帶有上、下標(biāo)的符號(hào) 答:選中,,設(shè)置單元格格式,,上標(biāo)或下標(biāo)。 16,、怎樣使一個(gè)單元格里的數(shù)據(jù),,變成每個(gè)數(shù)字占一個(gè)單元格啊,? 答:《數(shù)據(jù)》->分列->選中固定寬度,,點(diǎn)擊《下一步》,在預(yù)覽分列效果中的數(shù)字中間依次點(diǎn)擊,,點(diǎn)擊《完成》按鈕,,OK! 17,、將一列文本格式的數(shù)據(jù)轉(zhuǎn)換為常規(guī) 答:數(shù)據(jù)—分列,一直點(diǎn)下一步,,最后一步選常規(guī)就行了,。 復(fù)制(空單元格)或1,選擇性粘貼加或乘除,。 18,、小于10以下用紅色,以上用藍(lán)色標(biāo)識(shí)單元格 答:自定義格式 [紅色][<=10];[藍(lán)色][>10] 也可設(shè)定兩組條件格式,。 19,、如何用函數(shù)來(lái)獲取單元格地址 答:=ADDRESS(ROW(),COLUMN()) 20、求A1:B10中A列等于1的對(duì)應(yīng)B列中的最小值 答:=min(if(a1:a10=1,b1:b10)) 輸入后按ctrl+shift+enter完成,。 21,、怎樣定義格式表示如00062920020001、00062920020002只輸入001,、002 答:格式----單元格----自定義----"00062920020"@----確定 22,、如何統(tǒng)計(jì)A1:A10,D1:D10中的人數(shù)? 答:=COUNTA(A1:A10,D1:D10) 23,、A2單元格為 2005-3-24 10:00:00 想在B2單元格通過(guò)公式轉(zhuǎn)換成 2005-3-24 23:59:59 如何轉(zhuǎn),? ①=(TEXT(A2,"yyyy-m-d")&" 23:59:59")*1 然后設(shè)置為日期格式 ②=INT(A2)+"23:59:59" 再把單元格格式設(shè)置一下。 ③=INT(A2+1)-"0:0:1" 24,、我用方向鍵上下左右怎么不是移動(dòng)一個(gè)單元格,,而是向左或向下滾動(dòng)一屏,好奇怪啊,,平時(shí)都好好的,,有沒(méi)有解決的辦法? 答:是不是按下了ScrollLock鍵,。 25,、復(fù)制粘貼中回車鍵的妙用 1、 先選要復(fù)制的目標(biāo)單元格,,復(fù)制后,,直接選要粘貼的單元格,回車OK,; 2,、先選要復(fù)制的目標(biāo)單元格,復(fù)制后,,選定要粘貼的區(qū)域,,回車OK; 3,、先選要復(fù)制的目標(biāo)單元格,,復(fù)制后,選定要粘貼的不連續(xù)單元格,,回車OK,。 26、攝影功能 用攝影功能可以使影像與原區(qū)域保持一樣的內(nèi)容,,也就是說(shuō),,原單元格區(qū)域內(nèi)容改變時(shí),影像也會(huì)跟著改變,,是個(gè)很好用的功能,。 27、定義名稱的妙處 名稱的定義是EXCEL的一基礎(chǔ)的技能,,可是,,如果你掌握了,它將給你帶來(lái)非常實(shí)惠的妙處,! 1. 如何定義名稱 插入 – 名稱 – 定義 2. 定義名稱 建議使用簡(jiǎn)單易記的名稱,,不可使用類似A1…的名稱,,因?yàn)樗鼤?huì)和單元格的引用混淆。還有很多無(wú)效的名稱,,系統(tǒng)會(huì)自動(dòng)提示你,。 引用位置:可以是工作表中的任意單元格,可以是公式,,也可以是文本,。 在引用工作表單元格或者公式的時(shí)候,絕對(duì)引用和相對(duì)引用是有很大區(qū)別的,,注意體會(huì)他們的區(qū)別 – 和在工作表中直接使用公式時(shí)的引用道理是一樣的,。 3. 定義名稱的妙處1 – 減少輸入的工作量 如果你在一個(gè)文檔中要輸入很多相同的文本,建議使用名稱,。例如:定義DATA = “I LOVE YOU,, EXCEL!”,,你在任何單元格中輸入“=DATA”,,都會(huì)顯示“I LOVE YOU, EXCEL,!” 4. 定義名稱的妙處2 – 在一個(gè)公式中出現(xiàn)多次相同的字段 例如公式=IF(ISERROR(IF(A1>B1,A1/B1,A1)),””, IF(A1>B1,A1/B1,A1)),,這里你就可以將IF(A1>B1,A1/B1,A1)定義成名稱“A_B”,你的公式便簡(jiǎn)化為=IF(ISERROR(A_B),””,A_B) 5. 定義名稱的妙處3 – 超出某些公式的嵌套 例如IF函數(shù)的嵌套最多為七重,,這時(shí)定義為多個(gè)名稱就可以解決問(wèn)題了,。也許有人要說(shuō),使用輔助單元格也可以,。當(dāng)然可以,,不過(guò)輔助單元格要防止被無(wú)意間被刪除。 6. 定義名稱的妙處4 – 字符數(shù)超過(guò)一個(gè)單元格允許的最大量 名稱的引用位置中的字符最大允許量也是有限制的,,你可以分割為兩個(gè)或多個(gè)名稱,。同上所述,輔助單元格也可以解決此問(wèn)題,,不過(guò)不如名稱方便。 7. 定義名稱的妙處5 – 某些EXCEL函數(shù)只能在名稱中使用 例如由公式計(jì)算結(jié)果的函數(shù),,在A1中輸入’=1+2+3,,然后定義名稱 RESULT = EVALUATE(Sheet1!$A1),最后你在B1中寫入=RESULT,,B1就會(huì)顯示6了,。 還有GET.CELL函數(shù)也只能在名稱中使用,請(qǐng)參考相關(guān)資料,。 8. 定義名稱的妙處6 – 圖片的自動(dòng)更新連接 例如你想要在一周內(nèi)每天有不同的圖片出現(xiàn)在你的文檔中,,具體做法是: 8.1 找7張圖片分別放在SHEET1 A1至A7單元格中,調(diào)整單元格和圖片大小,使之恰好合適 8.2 定義名稱MYPIC = OFFSET(SHEET1!$A$1,WEEKDAY(TODAY(),1)-1,0,1,1) 8.3 控件工具箱 – 文字框,,在編輯欄中將EMBED("Forms.TextBox.1","")改成MYPIC就大功告成了,。 這里如果不使用名稱,應(yīng)該是不行的,。 此外,,名稱和其他,例如數(shù)據(jù)有效性的聯(lián)合使用,,會(huì)有更多意想不到的結(jié)果,。 28、 29,、第一列每個(gè)單元格的開(kāi)頭都包括4個(gè)空格,,如何才能快速刪除呢? 查找替換最方便 30,、如何快速地將表格中的所有空格用0填充,?其中空格的分布無(wú)規(guī)律! 選中數(shù)據(jù)所在區(qū)域 》定位》空值》輸入0》ctrl+enter 31、我在1行~10行中間有5個(gè)隱藏的行,,現(xiàn)在選擇1行~10行-復(fù)制,,然后到另一張表格,右鍵單擊一單元格,,粘貼,,那5個(gè)隱藏的行也出現(xiàn)了,請(qǐng)問(wèn)怎樣不讓這5個(gè)隱藏的行出現(xiàn)呢,? 答:Ctrl+* 工具,、自定義_編輯_選定可見(jiàn)單元格。 32,、在某個(gè)單元格中(如A1)輸入一個(gè)四則運(yùn)算表達(dá)式"3*(2+5)+6/3",要求函數(shù)格式 MyFun(A1)返回計(jì)算結(jié)果 Function MyFun(X As Range) MyFun = Evaluate(X.Formula) End Function 33,、MATCH 返回在指定方式下與指定數(shù)值匹配的數(shù)組(數(shù)組:用于建立可生成多個(gè)結(jié)果或可對(duì)在行和列中排列的一組參數(shù)進(jìn)行運(yùn)算的單個(gè)公式。數(shù)組區(qū)域共用一個(gè)公式,;數(shù)組常量是用作參數(shù)的一組常量,。)中元素的相應(yīng)位置。如果需要找出匹配元素的位置而不是匹配元素本身,,則應(yīng)該使用 MATCH 函數(shù)而不是 LOOKUP 函數(shù),。 語(yǔ)法 34、顯示比例小于40%即出現(xiàn)了“名稱” 35,、如何求出一個(gè)人到某指定日期的周歲,? =DATEDIF(起始日期,結(jié)束日期,"Y") 36、假如A欄里有任一單元格有"$"字符串,,則等于1,,否則等于0 公式如何寫? =IF(COUNTIF(A:A,"*$*")>0,1,0) =(countif((A:A,*$*)>0)+0 37,、如何限制單元數(shù)值上限(有公式的情況下)? 規(guī)定上限數(shù)值后,公式中任何數(shù)值改變都不會(huì)讓此數(shù)值變化更大,超過(guò)限制數(shù)值? =Min(公式,10),,不超過(guò)10 38,、在A1單元格中輸入AA, B1中要得到第幾列. =COLUMN(INDIRECT(A1&"1")) 39、"++"以及"--"分別代表什么意思? "++" = "=+" "--" = "=" 40,、【選擇性粘貼】里的【跳過(guò)空單元】到底有什么用啊? 跳過(guò)空格是指: 跳過(guò)剪切板上的空格,只復(fù)制,并保持他們的位置,粘貼到其他地方. 而不是指被粘貼的單元格. 這個(gè)功能非常有用,,可以防止空白單元格替換原來(lái)的數(shù)據(jù) 40、DATEDIF計(jì)算兩個(gè)日期之間的天數(shù),、月數(shù)或年數(shù),。提供此函數(shù)是為了與 Lotus 1-2-3 兼容。 語(yǔ)法 DATEDIF(start_date,end_date,unit) Start_date 為一個(gè)日期,,它代表時(shí)間段內(nèi)的第一個(gè)日期或起始日期,。日期有多種輸入方法:帶引號(hào)的文本串(例如 "2001/1/30")、系列數(shù)(例如,,如果使用 1900 日期系統(tǒng)則 36921 代表 2001 年 1 月 30 日)或其他公式或函數(shù)的結(jié)果(例如,,DATEVALUE("2001/1/30"))。有關(guān)日期系列數(shù)的詳細(xì)信息,,請(qǐng)參閱 NOW,。 End_date 為一個(gè)日期,它代表時(shí)間段內(nèi)的最后一個(gè)日期或結(jié)束日期,。 Unit 為所需信息的返回類型,。 Unit返回"Y"時(shí)間段中的整年數(shù)。"M"時(shí)間段中的整月數(shù),。"D"時(shí)間段中的天數(shù),。"MD"start_date 與 end_date 日期中天數(shù)的差。忽略日期中的月和年,。"YM"start_date 與 end_date 日期中月數(shù)的差,。忽略日期中的日和年。"YD"start_date 與 end_date 日期中天數(shù)的差,。忽略日期中的年,。 說(shuō)明 Microsoft Excel 按順序的系列數(shù)保存日期,這樣就可以對(duì)其進(jìn)行計(jì)算,。如果工作簿使用 1900 日期系統(tǒng),,則 Excel 會(huì)將 1900 年 1 月 1 日保存為系列數(shù) 1。而如果工作簿使用 1904 日期系統(tǒng),,則 Excel 會(huì)將 1904 年 1 月 1 日保存為系列數(shù) 0,,(而將 1904 年 1 月 2 日保存為系列數(shù) 1),。例如,,在 1900 日期系統(tǒng)中 Excel 將 1998 年 1 月 1 日保存為系列數(shù) 35796,,因?yàn)樵撊掌诰嚯x 1900 年 1 月 1 日為 35795 天。請(qǐng)查閱 Microsoft Excel 如何存儲(chǔ)日期和時(shí)間,。 Excel for Windows 和 Excel for Macintosh 使用不同的默認(rèn)日期系統(tǒng),。有關(guān)詳細(xì)信息,請(qǐng)參閱 NOW,。 示例 DATEDIF("2001/1/1","2003/1/1","Y") 等于 2,,即時(shí)間段中有兩個(gè)整年。 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,即開(kāi)始日期 1 和結(jié)束日期 15 之間的差,,忽略日期中的年和月,。 41、如何在EXCEL表格的一個(gè)單元格中設(shè)定校驗(yàn),。比如,,單元格均為手工輸入,某單元格必須等于其他幾個(gè)單元格之和,,如不等,,則該單元格顯示為紅色。 用條件格式公式=D1<>SUM($A1:$C1) 42,、A1]=abcabca 求a在單元格[A1]內(nèi)出現(xiàn)次數(shù)? =LEN(A1)-LEN(SUBSTITUTE(A1, "a", "")) 43,、20040404如何轉(zhuǎn)為2004-4-4 =text(a1,"0000-00-00") TEXT(Z12,"????-??-??") =LEFT("20040404",4)&SUBSTITUTE(RIGHT("20040404",4),0,"-") 使用分列最好 44、假如A2單元格有內(nèi)容,就在E2單元格里面填上今天的日期."2005-5-30",如果明天,就填明天的日期.2005-5-31,,但昨天的日期."2005-5-30",不改變. 建議使用VBA,,用循環(huán)引用也可以: 工具—選項(xiàng)—重新計(jì)算—迭代計(jì)算—最多迭代次數(shù)1 =if(a2="","",if(e2="",now(),e2)) 45、當(dāng)你的領(lǐng)導(dǎo)或者同事要使用你的機(jī)器發(fā)現(xiàn)面目全非,自定義太多弄的自己都頭大了,這時(shí)你想恢復(fù)EXcel的本色卻急的滿頭大汗? 這時(shí)最能解決這些問(wèn)題的就是用戶設(shè)置保存向?qū)Я?(要提前做) 在程序---OFFICE工具中可以找到它,他有保存本機(jī)設(shè)置和把設(shè)置應(yīng)用到本機(jī)兩個(gè)選項(xiàng).多保存幾個(gè),方便在不同的個(gè)性菜單中切換 46,、我現(xiàn)在要在一個(gè)22位的數(shù)值中,提取其中第10,11,12位的數(shù)字,不知道可有什么好的方法 =MID(A1,10,3) 我想計(jì)算總米數(shù)=卷長(zhǎng)*卷數(shù), 但由于原數(shù)據(jù)庫(kù)中卷長(zhǎng)帶有單位(如:1000m), 可不可以不需去掉單位直接用函數(shù)得出總米數(shù)? =substitute(a2,"m",)*b2 47,、在某格中輸入一串?dāng)?shù)字,如何使它能象輸入密碼一樣顯示******呢,? 如果需要輸入負(fù)數(shù),、文本時(shí),也出現(xiàn)******,,則自定義格式為: **,;**;**,;** 48,、用函數(shù)得出帶完整路徑的文件名 =CELL("filename") 49,、“定義名稱”的方法解除嵌套函數(shù)的限制 EXCEL中一個(gè)眾所周知的限制是你不能嵌套超過(guò)7層函數(shù).例如下面的公式是錯(cuò)誤的,因?yàn)橄拗票怀^(guò). =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)))))))) 通常的方法,如果你有一個(gè)公式超過(guò)這個(gè)限制,你會(huì)考慮用VBA代替.然而,如果你不想使用VBA,你可以通過(guò)對(duì)公式的一部分”定義名稱”來(lái)解決這種限制. 我們利用一個(gè)IF嵌套公式來(lái)測(cè)試 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" 當(dāng)然在實(shí)踐應(yīng)用中,我們最好利用VLOOKUP這個(gè)函數(shù)去實(shí)現(xiàn)結(jié)果,但這里我們的目的是做個(gè)演示.首先,我們定義一個(gè)名叫”O(jiān)NE 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)))))))) 接著,再定義另一個(gè)名叫”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) 這樣就解決了被嵌套函數(shù)的限制.因?yàn)楣街袥](méi)有一個(gè)單獨(dú)的部分超過(guò)限制,即使是”各個(gè)組成部分的集合”也沒(méi)有超過(guò)限制. 當(dāng)你編制一個(gè)超過(guò)限制的嵌套函數(shù)時(shí)可以使用這種方法.————————zhdi 50、A1:A10數(shù)字顯為文本格式時(shí),,如何求和 =SUMPRODUCT(A1:A10+0) 51,、工作表名設(shè)為變量 =INDIRECT("月份!"&ADDRESS(ROW(),COLUMN())) 此公式放在A1單元格,則是對(duì)1月A1單元格的引用,,如1月A1單元格為10,,則返回10。 =INDIRECT("月份"&E$1&"!"&ADDRESS(ROW(),COLUMN())) 此公式將工作表名設(shè)為變量,,變量為當(dāng)前表的E1單元格的值,,如E1為2,則引用月份2表中相對(duì)應(yīng)的值,。 52,、如何把“2005年5月1日”轉(zhuǎn)換成“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 53,、今天是10月31日,,我希望一個(gè)月后應(yīng)該是11月30日 工具_加載宏VBA 分析工具庫(kù) =edate(today(),1) 54、trim函數(shù)的說(shuō)明是如果是英文字符間有多個(gè)空格時(shí)會(huì)保留一個(gè)空格,,但為何中文之間的空格也不能全部去掉呢,? 要把字符(無(wú)論中、英文)之間的空格全部去掉, 公式為 : =SUBSTITUTE(A1," ","") 但此公式只能消除CHAR32空格, 你附件單元格A1的例子中, 包含有CHAR160空格, 和CHAR32空格 公式要改為 : =SUBSTITUTE(SUBSTITUTE(A1," ",""),CHAR(160),"") 單元格A1的例子為 : YES 1] 消除空格, B1輸入公式 : =SUBSTITUTE(SUBSTITUTE(A1," ",""),CHAR(160),"") 返回 YES 2] 查看字符串字?jǐn)?shù) A2, 輸入公式 : =LEN(A1) 返回 13 B2, 輸入公式 : =LEN(B1) 返回 3 結(jié)果證明B1巳沒(méi)有空格了. 3] 查看單元格數(shù)據(jù)的空格 : 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! 結(jié)果證明B1, CHAR160空格, 和CHAR32空格, 巳消除了. 55,、計(jì)算B列最后一個(gè)有數(shù)據(jù)(不含‘ 空格)單元格的行號(hào) =MATCH("*",$B:$B,-1) 56,、函數(shù)創(chuàng)建鏈接 =HYPERLINK("[Book1.xls]sheet3!A3","點(diǎn)擊后鏈接到表3的A3") 57、把A列后面統(tǒng)一加“-1”,,怎樣自動(dòng)加不用手工逐個(gè)加,?有沒(méi)有快速方法? 選中A列,點(diǎn)右鍵選"設(shè)置單元格格式","自定義",類型G/通用格式后加"-1" 58,、大家知道,,通過(guò)自定義格式常常可以解決一些顯示問(wèn)題:如需要在單元格中顯示為:123人,,456.00元,、ABCD00789,實(shí)際上單元格內(nèi)容僅僅為:123,、456,、789,這樣的問(wèn)題我們常常都通過(guò)自定義格式來(lái)實(shí)現(xiàn),,在顯示上能夠滿足要求,。 但如果有這樣一個(gè)需求:需要將顯示內(nèi)容直接轉(zhuǎn)換成單元格實(shí)際內(nèi)容?那又該如何快速轉(zhuǎn)換呢? 1,、選擇區(qū)域ctrl+C連續(xù)兩次,,然后選擇office粘貼板中的數(shù)據(jù)框中的下拉按鈕,出現(xiàn)快捷菜單,,選粘貼,然后右鍵點(diǎn)擊選擇區(qū)域,,選擇性粘貼-〉文本,。 不過(guò)2000的沒(méi)有這個(gè)選項(xiàng),,在2000用同樣的方法試驗(yàn)發(fā)現(xiàn).選擇區(qū)域ctrl+C連續(xù)兩次,然后直接粘貼,再刪除,這時(shí)再選擇性粘貼,選文本,就是了. 2、自定義一個(gè)函數(shù)如下: Function abc(myRange As Range) abc = myRange.Text End Function 然后調(diào)用 3使用Get.Cell(53,A1)也可以 4,、先復(fù)制到記事本再?gòu)?fù)制回EXCEL 原理:復(fù)制到記事本的是excel中的顯示文本,。 59、在工作表中點(diǎn)擊菜單 文件->發(fā)送->郵件收件人->以附件形式發(fā)送收件人一欄請(qǐng)?zhí)顚?郵箱地址,,,點(diǎn)擊發(fā)送可以了. 或新建郵件,收件人一欄請(qǐng)?zhí)顚? 郵箱地址,然后用鼠標(biāo)把那個(gè) excel 文件拖到我的名字下面就可以點(diǎn)擊發(fā)送了. 60,、求非空單元格數(shù)量 公式計(jì)算出來(lái)的數(shù)據(jù),COUNTA不能用的(否則空字符也計(jì)算進(jìn)去了) =COUNTIF($E$3:$E$65536,"?*") 強(qiáng)制計(jì)數(shù)至少1個(gè)字符的單元格數(shù),。 61,、(精) 動(dòng)態(tài)求和公式,自A列A1單元格到當(dāng)前行前面一行的單元格求和. =SUM(INDIRECT("A1:A"&ROW()-1)) 62、在使用SUM函數(shù)在單元格中輸入超過(guò)30個(gè)參數(shù)時(shí),,你將得到一個(gè)"參數(shù)太多"的錯(cuò)誤提示,。 解決辦法:在引用參數(shù)的兩邊多加一個(gè)括號(hào),這時(shí),,SUM把括號(hào)內(nèi)的最多可達(dá)254個(gè)參數(shù)當(dāng)成一個(gè)處理,。(主要是受公式長(zhǎng)度限制,理論上可以達(dá)到無(wú)數(shù)個(gè)) 63如果您覺(jué)得公式復(fù)雜了,,或是不直觀 偶給你提供兩個(gè)捷徑: 方法一:選擇公式單元格-〉菜單欄-〉[工具]-〉[公式審核]-〉[公式求值] 然后按照導(dǎo)向提示,,一步步地觀察公式求值的過(guò)程。(2003版適用) 方法二:選擇公式單元格-〉選取編輯欄或F2-〉用鼠標(biāo)置亮公式中你想查 看的那段-〉按F9,,會(huì)顯示該段的計(jì)算結(jié)果,。 64請(qǐng)問(wèn)有沒(méi)有返回工作表名稱的函數(shù)? 插入—名稱—定義: sh=replace(get.document(1),1,find("]",get.document(1)),)&t(now()) 單元格輸入=sh GET.DOCUMENT是宏表函數(shù),,當(dāng)數(shù)據(jù)變動(dòng)時(shí)無(wú)法自動(dòng)計(jì)算,,now()是易失性函數(shù),任何變動(dòng)都會(huì)強(qiáng)制計(jì)算,,宏表函數(shù)所以加上now()就可以自動(dòng)重算了,,T()用來(lái)將now()產(chǎn)生的數(shù)值轉(zhuǎn)化為空文本。 65,、顯示當(dāng)前工作表的表名 =MID(CELL("filename"),FIND("]",CELL("filename"))+1,255) 66,、我要自動(dòng)生成數(shù)據(jù)在K29+010~K29+600之間的數(shù)據(jù)(顯示為K29+XXX) =TEXT(INT(RAND()*591)+10,"K29+000") 67、我想把列P1~P60的數(shù)據(jù)引用到行U1~CB1,,本來(lái)想用公式=$P1拉動(dòng)復(fù)制,,結(jié)果不行,。 U1=INDIRECT("P"&COLUMN()-20),向右拉 68,、 姓名 外語(yǔ) 數(shù)學(xué) 王 86 李 95 張 80 姓名 外語(yǔ) 數(shù)學(xué) 李 95 90 張 80 80 王 86 75 將表1的姓名導(dǎo)入自定義序列,,在表2按此自定義序列排序 或使用vlookup公式 表1的C2 =vlookup(a2,表2!a:c,3,0) 如何將2個(gè)排列順序不同的表統(tǒng)一一下 69、如果你要在A3的前面插入100行,可以這樣: 在名稱框輸入 3:103----回車-----ctrl+shift+"+"(大鍵盤) 70,、VBA從哪學(xué)起 1,、錄制宏; 2,、數(shù)據(jù)類型(主是整型和字符串型),; 3、程序結(jié)構(gòu)(主要是分支,,判斷,,循環(huán)); 4,、EXCEL對(duì)象(單元格,,工作表,工作?。?br>71,、如何實(shí)現(xiàn)求平均值時(shí)只對(duì)不等于零的數(shù)求均值? average(if(a1:a5>0,a1:a5)) 72,、D1輸入姓名,,A列中相同的姓名按設(shè)定和條件格式顯示 =find(D1,$A$1) 73、excel中插入/名稱/指定(應(yīng)用)(標(biāo)志)的用途是什么? 1,、指定的用法 例如:在A1:A3中輸入了AAA,,BBB,CCC 選中A1:D3》插入》名稱》指定》最左列》確定 這樣就一次性定義了3個(gè)名稱 AAA=B1:D1 BBB=B2:D2 CCC=B3:C3 2,、應(yīng)用的用法 在A4輸入 =sum(B1:D1,B3:D3) 然后 插入》名稱》應(yīng)用 會(huì)將公式中的引用用相應(yīng)的名稱替換,。 74、請(qǐng)教如何篩選出特殊顏色的數(shù)據(jù),。 定義名稱.X=GET.CELL(24,單元格),輔助列=X 按輔助列篩選 |
|