office VBA 學習

http://www.officefans.net/cdb/viewthread.php tid=25823&fpage=1&highlight=%B7%B5%BB%D8%2B%D0%D0%BA%C5
以下是近段時間從不同地方收集到的一些學習資料,希望對新手有借鑑作用,同時感謝各位對我的支持和幫助,先發60小點,代碼可能不完全正確,請指正.
全部顯示
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 事件
每次打開工作簿時,本示例都最大化 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.Color = 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
個人主頁:http://ykk1976.anyp.cn
接上面
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

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", "")) 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 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 此句用來關閉網格線.
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
下面兩組程序摘自楊開科的"我的自學收集資料".我都分別進行了試用,"14,將工作薄中的全部n張工作表都在sheet1中建上鍊接"這段程序試用成功,但有個建議:當工作表超過一定數量時(例如超過30張),第31張則在B列反映,如此類推.
第二組程序我則沒有那麼幸運了,試用不成功,不知是什麼原因.請指教!
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,平時只能看到表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
[ Last edited by 吾識野 on 2004-9-4 at 12:08 ]
55樓說 
吾識野:將下列代碼加入sheet2,sheet3
Private Sub Worksheet_Deactivate()
Me.Visible = False
End Sub
56樓說 向EXE文件裏導入數據時出錯 請幫助解決!!改日請你吃小酒!
向EXE文件裏導入數據時出錯(文件是xls文件編譯的EXE文件)! 
Sub 導入()
Dim Filename
Filename = Application.GetOpenFilename(FileFilter:="Excel文件(*.xla; *.xls),*.xla;*.xls", Title:="選擇Excel文檔") '選擇要導入的xls文件
If Filename = False Then Exit Sub 
Workbooks.Open Filename, Password:=sy '文件名有口令 */可能有錯/*
Rows("1:350").Select '導入行
Application.CutCopyMode = False
Selection.Copy
Windows("基層版V2.0").Activate '導入的目標文件 *正確
Sheets("SJ").Select '表有
Range("A1").Select
ActiveSheet.Paste 
Range("A1").Select
Application.CutCopyMode = False
' Workbooks("10401.xls").Close SaveChanges:=False '***要關閉上面選擇的文件(文件名很多都不同樣)////如何解決 
End Sub
Excel基礎應用實例教程
楊開科整理
1,我在單元格中填上"="現在是"&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
2,自定義單元格格式 [=0]"男";[=1]"女"; 則可實現輸入0顯示爲"男".輸入1顯示爲"女".
3,excel裏面如何添加自定函數幫助信息呢
在VBE打開對象瀏覽器,找到自定函數,右鍵——屬性中添加
4,怎麼解決Excel自動將0開頭的數字自動刪除0 
是從"獲取外部數據"導入的嗎 在第3步可以選擇"列數據格式"爲文本,這樣零就不會被刪除了.
5,打開多個EXCEL文檔,照理應該在狀態欄顯示多個打開的文檔,以便各文檔互相切換,但現在只能顯示一個文檔,必須關掉一個才能顯示另一個,關掉一個再顯示另一個,不知何故 
可以從"窗口"菜單中切換窗口.
或者改回你原來的樣子:工具/選項/視圖,選中任務欄中的窗格.
6,目的:表中>50000的單元格紅色顯示.做法:選擇整張表,在條件格式命令中,設置了">50000以紅色填充單元格"的條件,出現的問題:表頭(數值爲文本)的單元格也呈紅色顯示.我知道,原因是因爲區域選擇得不對,如果只選擇數字區域不會出現這種情況,如果表結構簡單,則好處理,如果表格結構複雜,這樣選擇就很麻煩.有沒有辦法選擇整張表,但是表頭(數值爲文本)的單元格不被條件格式.
答:條件格式設置公式=--A1>50000
問=--A1>50000中的--代表什麼意思,
答:轉變爲數值.與+0,*1,是一樣的效果.
7,,如何打印行號列標 
答:文件菜單-----頁面設置---工作表----在打印選項中的行號列標前打勾.
8,如何打印不連續區域 
答:按CTRL鍵不鬆,選取區域,再點文件菜單中的打印區域--設置打印區域.
9,打印時怎樣自動隱去被0除的錯誤提示值 
答:頁面設置—工作表,錯誤值打印爲空白
10,如何設置A1當工作表打印頁數爲1頁時,A1=1,打印頁數爲2頁時,A2=2,... 
答:插入名稱a=GET.DOCUMENT(50, "Sheet1")&T(NOW()),在A1輸入=a
11,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.即可
12,我想在幾千個數據中列出沒有重複的數據
答:數據_篩選_高級篩選_選擇不重複記錄.
13,我需要保留一位小數,不管後面是什麼數字,超過5或不超過5,都向前進一位.
例如:329.99----->330.00
329.84------------>329.90
329.86------------>329.90
答:=roundup(*,2)或=round(a1+0.04,1)
14,D列爲字符型值,轉換爲數型的的值.如何進行操作
答: 複製任一空單元格.選中D列,選擇性粘貼,加.
15,在Excel中如何輸入帶有上,下標的符號
答:選中,設置單元格格式,上標或下標.
16,怎樣使一個單元格里的數據,變成每個數字佔一個單元格啊 
答:《數據》->分列->選中固定寬度,點擊《下一步》,在預覽分列效果中的數字中間依次點擊,點擊《完成》按鈕,OK!
17,將一列文本格式的數據轉換爲常規
答:數據—分列,一直點下一步,最後一步選常規就行了.
複製(空單元格)或1,選擇性粘貼加或乘除.
18,小於10以下用紅色,以上用藍色標識單元格
答:自定義格式 [紅色][10]
也可設定兩組條件格式.
19,如何用函數來獲取單元格地址
答:=ADDRESS(ROW(),COLUMN())
20,求A1:B10中A列等於1的對應B列中的最小值
答:=min(if(a1:a10=1,b1:b10))
輸入後按ctrl+shift+enter完成.
21,怎樣定義格式表示如00062920020001,00062920020002只輸入001,002
答:格式----單元格----自定義----"00062920020"@----確定
22,如何統計A1:A10,D1:D10中的人數 
答:=COUNTA(A1:A10,D1:D10)
23,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"
24,我用方向鍵上下左右怎麼不是移動一個單元格,而是向左或向下滾動一屏,好奇怪啊,平時都好好的,有沒有解決的辦法 
答:是不是按下了ScrollLock鍵.
25,複製粘貼中回車鍵的妙用
1, 先選要複製的目標單元格,複製後,直接選要粘貼的單元格,回車OK;
2,先選要複製的目標單元格,複製後,選定要粘貼的區域,回車OK;
3,先選要複製的目標單元格,複製後,選定要粘貼的不連續單元格,回車OK.
26,攝影功能
用攝影功能可以使影像與原區域保持一樣的內容,也就是說,原單元格區域內容改變時,影像也會跟着改變,是個很好用的功能.
27,定義名稱的妙處
名稱的定義是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就大功告成了.
這裏如果不使用名稱,應該是不行的.
此外,名稱和其他,例如數據有效性的聯合使用,會有更多意想不到的結果.
28,
29,第一列每個單元格的開頭都包括4個空格,如何才能快速刪除呢 
查找替換最方便
30,如何快速地將表格中的所有空格用0填充 其中空格的分佈無規律!
選中數據所在區域 》定位》空值》輸入0》ctrl+enter
31,我在1行~10行中間有5個隱藏的行,現在選擇1行~10行-複製,然後到另一張表格,右鍵單擊一單元格,粘貼,那5個隱藏的行也出現了,請問怎樣不讓這5個隱藏的行出現呢 
答:Ctrl+*
工具,自定義_編輯_選定可見單元格.
32,在某個單元格中(如A1)輸入一個四則運算表達式"3*(2+5)+6/3",要求函數格式 MyFun(A1)返回計算結果 
Function MyFun(X As Range)
MyFun = Evaluate(X.Formula)
End Function
33,MATCH
返回在指定方式下與指定數值匹配的數組(數組:用於建立可生成多個結果或可對在行和列中排列的一組參數進行運算的單個公式.數組區域共用一個公式;數組常量是用作參數的一組常量.)中元素的相應位置.如果需要找出匹配元素的位置而不是匹配元素本身,則應該使用 MATCH 函數而不是 LOOKUP 函數.
語法

34,顯示比例小於40%即出現了"名稱"
35,如何求出一個人到某指定日期的週歲 
=DATEDIF(起始日期,結束日期,"Y")
36,假如A欄裏有任一單元格有"$"字符串,則等於1,否則等於0 公式如何寫 
=IF(COUNTIF(A:A,"*$*")>0,1,0)
=(countif((A:A,*$*)>0)+0
37,如何限制單元數值上限(有公式的情況下) 
規定上限數值後,公式中任何數值改變都不會讓此數值變化更大,超過限制數值 
=Min(公式,10),不超過10
38,在A1單元格中輸入AA, B1中要得到第幾列.
=COLUMN(INDIRECT(A1&"1"))
39,"++"以及"--"分別代表什麼意思 
"++" = "=+"
"--" = "="
40,【選擇性粘貼】裏的【跳過空單元】到底有什麼用啊 
跳過空格是指: 跳過剪切板上的空格,只複製,並保持他們的位置,粘貼到其他地方. 而不是指被粘貼的單元格.
這個功能非常有用,可以防止空白單元格替換原來的數據
40,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 之間的差,忽略日期中的年和月.
41,如何在EXCEL表格的一個單元格中設定校驗.比如,單元格均爲手工輸入,某單元格必須等於其他幾個單元格之和,如不等,則該單元格顯示爲紅色.
用條件格式公式=D1SUM($A1:$C1)
42,A1]=abcabca
求a在單元格[A1]內出現次數 
=LEN(A1)-LEN(SUBSTITUTE(A1, "a", ""))
43,20040404如何轉爲2004-4-4
=text(a1,"0000-00-00")
TEXT(Z12," - - ")
=LEFT("20040404",4)&SUBSTITUTE(RIGHT("20040404",4),0,"-")
使用分列最好
44,假如A2單元格有內容,就在E2單元格里面填上今天的日期."2005-5-30",如果明天,就填明天的日期.2005-5-31,但昨天的日期."2005-5-30",不改變.
建議使用VBA,用循環引用也可以:
工具—選項—重新計算—迭代計算—最多迭代次數1
=if(a2="","",if(e2="",now(),e2))
45,當你的領導或者同事要使用你的機器發現面目全非,自定義太多弄的自己都頭大了,這時你想恢復EXcel的本色卻急的滿頭大汗 
這時最能解決這些問題的就是用戶設置保存嚮導了.(要提前做)
在程序---OFFICE工具中可以找到它,他有保存本機設置和把設置應用到本機兩個選項.多保存幾個,方便在不同的個性菜單中切換
46,我現在要在一個22位的數值中,提取其中第10,11,12位的數字,不知道可有什麼好的方法
=MID(A1,10,3)
我想計算總米數=卷長*卷數, 但由於原數據庫中卷長帶有單位(如:1000m), 可不可以不需去掉單位直接用函數得出總米數 
=substitute(a2,"m",)*b2
47,在某格中輸入一串數字,如何使它能象輸入密碼一樣顯示******呢 
如果需要輸入負數,文本時,也出現******,則自定義格式爲:
**;**;**;**
48,用函數得出帶完整路徑的文件名
=CELL("filename")
49,"定義名稱"的方法解除嵌套函數的限制 
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
50,A1:A10數字顯爲文本格式時,如何求和
=SUMPRODUCT(A1:A10+0)
51,工作表名設爲變量
=INDIRECT("月份!"&ADDRESS(ROW(),COLUMN()))
此公式放在A1單元格,則是對1月A1單元格的引用,如1月A1單元格爲10,則返回10.
=INDIRECT("月份"&E$1&"!"&ADDRESS(ROW(),COLUMN()))
此公式將工作表名設爲變量,變量爲當前表的E1單元格的值,如E1爲2,則引用月份2表中相對應的值.
52,如何把"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)發送->郵件收件人->以附件形式發送收件人一欄請填寫:郵箱地址,,點擊發送可以了.
或新建郵件,收件人一欄請填寫: 郵箱地址,然後用鼠標把那個 excel 文件拖到我的名字下面就可以點擊發送了.
60,求非空單元格數量
公式計算出來的數據,COUNTA不能用的(否則空字符也計算進去了)
=COUNTIF($E$3:$E$65536," *")
強制計數至少1個字符的單元格數. 
61,(精) 動態求和公式,自A列A1單元格到當前行前面一行的單元格求和.
=SUM(INDIRECT("A1:A"&ROW()-1))
62,在使用SUM函數在單元格中輸入超過30個參數時,你將得到一個"參數太多"的錯誤提示.
解決辦法:在引用參數的兩邊多加一個括號,這時,SUM把括號內的最多可達254個參數當成一個處理.(主要是受公式長度限制,理論上可以達到無數個)
63如果您覺得公式複雜了,或是不直觀
偶給你提供兩個捷徑:
方法一:選擇公式單元格-〉菜單欄-〉[工具]-〉[公式審覈]-〉[公式求值]
然後按照導向提示,一步步地觀察公式求值的過程.(2003版適用)
方法二:選擇公式單元格-〉選取編輯欄或F2-〉用鼠標置亮公式中你想查
看的那段-〉按F9,會顯示該段的計算結果.
64請問有沒有返回工作表名稱的函數 
插入—名稱—定義:
sh=replace(get.document(1),1,find("]",get.document(1)),)&t(now())
單元格輸入=sh
GET.DOCUMENT是宏表函數,當數據變動時無法自動計算,now()是易失性函數,任何變動都會強制計算,宏表函數所以加上now()就可以自動重算了,T()用來將now()產生的數值轉化爲空文本.
65,顯示當前工作表的表名
=MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)
66,我要自動生成數據在K29+010~K29+600之間的數據(顯示爲K29+XXX)
=TEXT(INT(RAND()*591)+10,"K29+000")
67,我想把列P1~P60的數據引用到行U1~CB1,本來想用公式=$P1拉動複製,結果不行.
U1=INDIRECT("P"&COLUMN()-20),向右拉
68,
姓名
外語
數學

86

95

80
姓名
外語
數學

95
90

80
80

86
75
將表1的姓名導入自定義序列,在表2按此自定義序列排序
或使用vlookup公式
表1的C2
=vlookup(a2,表2!a:c,3,0)
如何將2個排列順序不同的表統一一下
69,如果你要在A3的前面插入100行,可以這樣:
在名稱框輸入 3:103----回車-----ctrl+shift+"+"(大鍵盤)
70,VBA從哪學起
1,錄製宏;
2,數據類型(主是整型和字符串型);
3,程序結構(主要是分支,判斷,循環);
4,EXCEL對象(單元格,工作表,工作薄)
71,如何實現求平均值時只對不等於零的數求均值 
average(if(a1:a5>0,a1:a5))
72,D1輸入姓名,A列中相同的姓名按設定和條件格式顯示
=find(D1,$A$1)
73,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)
然後 插入》名稱》應用
會將公式中的引用用相應的名稱替換.
74,請教如何篩選出特殊顏色的數據.
定義名稱.X=GET.CELL(24,單元格),輔助列=X
按輔助列篩選
75,如何快速查看名稱
插入---名稱---粘貼---名稱清單(粘貼列表)
76,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)
77,日期分列
如有一列格式如2005-7-8的數據,要將其分爲2005 8 7,方法爲:數據_分列,-號作分隔符,列數據格式-文本,再將年份轉爲數值.
78,查詢時查不到數據的原因
可能是格式不一致.
79,120,000顯示爲12.0
自定義格式:
#!.0,
80,121,999顯示爲12.2
#!.#,
81,大寫的零,就是那個大的圈圈如何輸入
1,在特殊格式中,中文小寫是可以顯示"○"的.
2, ABC和紫光拼音輸入法下,輸入字母i(小寫)和0就會顯示大寫的"○",入如果是輸入年份也可以用字母o代替(大寫).
3,如果用 智能ABC 輸入法,按V,再按1,再按=,選擇.
82,計算兩個日期之間的天數
=DATEDIF(起始日期,結束日期,"D")
http://club.excelhome.net/dispbbs.asp boardID=1&ID=86150&page=1
83,對於一些不可打印的字符(在Excel顯示中類似空格),直接用替換方法不容易去掉.
可以這麼做:
=SUBSTITUTE(CLEAN(A1)," ","")
84,123
0123
75223
比如說上述的數字,我想在它們前面加上38910104,而且位置短的數字,會自動補0
變成如下:
3891010400123
3891010400123
3891010475223)
=TEXT(A1,"3891010400000")
85,VLOOKUP查找函數,不如用INDEX和MATCH函數查找,特別對於大型工作表,VLOOKUP函數的公式看起來短一些,但是由於它是查找函數,每執行1次,它就要搜索它的第2個參數區域,速度慢.
而用INDEX和MATCH函數速度明顯比VLOOKUP快.
86,如果在Sheet1中A 列的單元格中數據的部分字符包含在Sheet2的A列中,則提取Sheet2對應的B列數據到Sheet1的B列中.否則顯示空白.
=IF(COUNTIF(Sheet2!A:A,"*"&A1&"*"),VLOOKUP("*"&A1&"*",Sheet2!A:B,2,0),"")
87,find函數
=if(iserr(find("某某",A1)),"沒找到","找到")
88,我有一列數據,比如A1:A100,現在我想這樣計算,我想在B1單元格求和,但是要是變量,比如我在C1單元格中輸入數據5,那麼B1求出的結果就是A1:A5,如果我在C1單元格中輸入數據10,那麼B1求出的結果就是A1:A10, 請問怎麼實現求和的範圍隨C1變化
B1=SUM(INDIRECT("A1:A"&C1))
89,圖片批註
右擊帶批註的單元格》編輯批註》在批註邊框上右擊》設置批註格式》顏色與線條》單擊"顏色"》填充效果》圖片》選擇圖片.
你瞭解工作簿和工作表限制嗎 
很多人認爲,一個工作簿文件最大可存在256個工作表,其實,這是錯誤的,請看:
打開的工作簿個數 受可用內存和系統資源的限制 
工作表大小 65,536 行乘以 256 列 
列寬 255 個字符 
行高 409 磅 
分頁符個數 水平方向 1000 個;垂直方向 1000 個 
單元格內容(文本)的長度 32,767 個字符.單元格中只能顯示 1,024 個字符;而編輯欄中可以顯示全部 32,767 個字符. 
工作簿中的工作表個數 受 可用內存的限制(默認爲 3 個工作表) 
工作簿中的顏色數 56 
工作簿中的單元格樣式種類 4,000 
工作簿中命名視圖個數 受可用內存限制 
自定義數字格式種類 受可用內存限制 
工作簿中的名稱個數 受可用內存限制 
工作簿中的窗口個數 受系統資源限制 
窗口中的窗格個數 4 
鏈接的工作表個數 受可用內存限制 
方案個數 受可用內存的限制;彙總報表只顯示前 251 個方案 
方案中的可變單元格個數 32 
規劃求解中的可調單元格個數 200 
自定義函數個數 受可用內存限制 
縮放範圍 10% 到 400% 
報表個數 受可用內存限制 
排序引用的個數 單個排序中爲 3,如果使用連續排序則沒有限制 
撤消層次 16 
數據窗體中的字段個數 32 
工作簿中的自定義工具欄個數 受可用內存限制 
自定義工具欄按鈕個數 受可用內存限制 
1, 號
說明:表示要查找的內容與問號所在的位置相同的單一字符
示例:fyu 可查找fyu1,fyuv等,此列中的1和v均用 代替.
2,*號
說明:表示要查找的內容與問號所在的位置相同的多個字符
示例:fyu*可查找fyu123,fyuv55u等,此列中的123和v55u均用*代替.
3,~波形符號
說明:查找一個問號,星號或波形符號,可在~後跟 ,*或~
示例:fyu~ 可查找fyu 
學會了通配符查找,在很多時候是很省力的,不妨試一試.
在單元格中同時顯示公式與結果的方法 
1,工具_選項_窗口選項_勾選公式選項
2,在A列顯示公式,B列顯示結果,操作方法如下:
在B2單元格輸入=1+2*3,此時將顯示7,爲計算結果
選擇A2單元格,插入_名稱_定義,輸入名稱如mFormula,引用位置處輸入=Get.Cell(6,Sheet1!B2),
此後可在A列中要顯示公式的單元格輸入=mFormula,可取得B列相對應單元格的公式.
3,在A列中輸入了公式,要在B列顯示運算結果,操作方法如下:
選擇B2單元格,插入_名稱_定義,輸入名稱如Result引用位置處輸入=Evaluate(Sheet1!A2),表示計算左邊單元格的公式,
此後即可在B列中要計算結果的單元格中輸入=Result,或從B2用填充句柄複製,即可取得從A列相對應單元格的公式.
說明:Evaluate()是Excel 4.0版的宏表函數,excel 2000以上版本還支持,但只可用於名稱定義中;Get.Cell用於獲取單元格或單元格區域的屬性,格式爲:Get.Cell(類型值,引用區域).
Excel使用技巧集 
[轉貼]自369信合網
2.1 輸入編輯技巧(1)
2.1.1 從Word表格文本中引入數據
請問可以將Word表格的文本內容引入到Excel工作表中嗎 具體如何實現 
答:可以通過"選擇性粘貼"命令來實現.具體操作如下:先利用"複製"命令將Word表格文本內容添加到系統剪貼板中,然後在Excel工作表中定位到對應位置.單擊"編輯"菜單中的"選擇性粘貼"命令,再選擇"方式"下的"文本"項,最後單擊"確定"按鈕即可.
2.1.2 快速實現整塊數據的移動
在工作中常常需要移動單元格中的數據,請問有比"粘貼"操作更快捷的方法嗎 
答:可以直接採用拖動的方法.操作過程如下:首先選擇要移動的數據(注意必須是連續的區域).然後移動鼠標到邊框處,當鼠標指針變成一個四個箭頭標誌時,按住"Shift"鍵的同時按下鼠標左鍵,拖動鼠標至要移動的目的區域(可以從鼠標指針右下方的黃色提示框中獲知是否到達目標位置),放開鼠標左鍵即完成移動.
2.1.3 固定數據輸入時的焦點
在數據輸入時,每當我們按下"Enter"鍵後,光標就會自動跳轉到下一個單元格中.因此在進行數據的反覆驗證中,就必須反覆地來重新定位焦點.請問有什麼方法來固定數據輸入的焦點嗎 
答:要實現上述要求並不難.輸入數據前,在按住"Ctrl"鍵的同時單擊選擇該單元格.當單元格邊框的邊很細的時候,再開始數據的輸入.這樣不管按下多少次"Enter"鍵,光標始終都不會移動到其他單元格.如果要移動到下一單元格,可以使用方向鍵來完成.
當然如果當前工作表中要實行數據驗證的單元格很多時,每次都按上述方法來操作未免有些麻煩.那麼可以試試以下方法來實現一勞永逸.單擊"工具"菜單中的"選項"命令,在彈出的設置框中單擊"編輯"選項卡,然後取消選擇"按Enter鍵後移動"複選框,最後單擊"確定"按鈕即可.
2.1.4 實現以"0"開頭的數字輸入
在Excel單元格中,輸入一個以"0"開頭的數據後,往往在顯示時會自動把"0"消除掉.請問有什麼辦法來讓"0"不被消掉嗎 
答:要保留數字開頭的"0",其實是非常簡單的.只要在輸入數據前先輸入一個"' "(單引號),這樣跟在後面的以"0"開頭的數字的"0"就不會被系統自動消除.
2.1.5 將整列數據轉換爲矩陣形式
請問如何將工作表中的整列數據轉換成用矩陣來表示 
答:要實現一列數據轉化成一個矩陣,必須保證該列數據的個數L要等於該矩陣行數M和列數N的乘積,即L=M×N.然後按如下操作:選擇該列的前N個數據,將其"複製"到剪貼板.再單擊矩陣第一行的第一個單元格,然後從"編輯"菜單中執行"選擇性粘貼"命令,在彈出的對話框中選擇"轉置"複選框,最後再單擊"確定"按鈕即把前N數據轉換成了矩陣的第一行.接下來再選擇該列中的下一組N個數據,執行"複製".再將光標定位到矩陣的第二行的第一個單元格,執行"轉置"操作.這樣經過M次的"轉置"後就把數據全部轉換爲矩陣形式了.
2.1.6 利用命令按鈕快速實現合併
對行或者列進行合併操作是編輯工作表時經常會遇到的,可每次都要執行好幾個步驟才能完成,請問有沒有更快捷的辦法 
答:其實系統爲我們提供了合併單元格的工具按鈕,只是它不是默認的工具欄按鈕而已,可以按以下操作自行添加:單擊"工具"菜單欄中的"自定義"命令,再選擇"命令"選項卡,在左邊的"類別"列表中選擇"格式"後,在右邊的"命令"選擇列表中就可以找到"合併單元格","跨越合併"以及"撤銷合併單元格"的命令按鈕.
直接用鼠標將它們拖到工具欄上的合適位置即可.這樣下次要執行合併操作時只要按對應的命令按鈕就可以快速完成了.
2.1.7 讓單元格數據斜向排版
有些工作表文件中的單元格數據是斜方向顯示的,請問這個效果該如何實現 
答:要實現這個效果並不難,因爲這是系統自身提供的一種排版模式.只需要找到相應的命令按鈕.方法如下:單擊"工具"菜單中的"自定義"命令,在"命令"選項卡的"類別"列表中選擇"格式"項,在"命令"列表中找到"順時針斜排"和"逆時針斜排"兩個命令按鈕,將它們拖到工具欄的合適位置.這樣只要選擇需要斜排的單元格,然後執行命令按鈕就可以實現數據的斜向排版.
2.1.8 自動檢測輸入數據的合法性
由於特殊需要,我們對單元格的數據輸入要求必須按統一格式來定義.請問可以在用戶輸入數據時自動檢測其一致性嗎 
答:只要爲需要的單元格或工作表設置數據有效性檢查即可.先選擇需要進行該設置的單元格,然後在"數據"菜單中找到"有效性"命令,單擊執行它.在彈出的對話框中選擇"設置"選項卡.再從"允許"下拉列表框中選擇要設置的類型,如"整數","小數","日期"等.如果對數據輸入的大小或範圍有要求的話,還可以對"數據"項進行設置.
當然還可以在"出錯警告"和"輸入法模式"選項卡中爲單元格設置提示的類型和默認的輸入法等.最後單擊"確定"按鈕.這樣設置後,當用戶輸入的數據不符合你的設置要求時,系統會自動彈出一個"輸入值非法"的提示對話框來提醒用戶.
2.1.9 通過剪貼板爲單元格添加數據
爲什麼利用"複製"和"粘貼"命令來爲單元格中添加信息時,在菜單中的"粘貼"命令項有時是灰色的,沒辦法操作 請問該怎麼辦 
答:想通過"粘貼"對單元格內容進行添加數據是無法實現的.但是可以利用"剪貼板"來實現.首先要通過"編輯"菜單中的"Office剪貼板"命令,調出剪貼板查看程序,然後將要添加的數據"複製"到剪貼板上,這時可以在右邊的剪貼板上看到該數據.接着將光標定位到要添加的單元格中,再單擊剪貼板中剛纔複製好的數據條目,數據就會自動的添加到單元格中了.
2.1.10 直接公式輸入法
在輸入公式或函數時,每次都要在前面帶個"="號,實在麻煩.請問可以直接輸入公式嗎 
答:當然可以,只要稍微設置一下就可以實現了.具體步驟如下:先單擊"工具"菜單中的"選項"命令.再在彈出的選項對話框中選擇"1-2-3的幫助"選項卡,選擇"轉換Lotus 1-2-3公式"複選框.
最後單擊"確定"按鈕即完成設置.不過需要注意的是,這樣設置後必須保證輸入的公式全部都是數字,不能包含有引用單元格的其他符號.否則必須加上"="號.
2.1.11 讓文本輸入自動適應單元格長度
在Excel單元格中輸入文字時,即使輸入的文字長度超過單元格長度,系統也不會自動換行,而只是顯示爲一行.請問可以讓系統自動根據單元格長度來調整文本的行數嗎 
答:其實這就是文本的自動換行問題,要實現起來是很容易的.
在輸入文本時,當到達單元格最右邊時,同時按下"Alt+Enter"組合鍵,這樣系統會自動加寬單元格的寬度,而文本也會自動換到下一行.如果覺得每次按組合鍵太麻煩,可以執行如下設置來一勞永逸:首先單擊工作表最左上角的行,列相交的空白處,選擇工作表中的所有單元格(當然也可以按下"Ctrl+A"組合鍵來選擇).然後單擊"格式"菜單中的"單元格"命令,再在彈出的"單元格格式"對話框中選擇"對齊"選項卡,選擇"自動換行"複選框.最後單擊"確定"按鈕即可完成.如果只要實現部分單元格的自動換行,可以先選定這些單元格,再執行上述操作就可以了.
2.1.12 利用"填充柄"快速輸入相同數據
在編輯工作表時,有時整行或整列需要輸入的數據都一樣,很顯然如果一個一個單元格的輸入實在太麻煩了.請問有什麼快捷的方法嗎 
答:可以利用鼠標拖動"填充柄"來實現快速輸入.具體操作如下:首先在第一個單元格中輸入需要的數據,然後單擊選中該單元格,再移動鼠標指針至該單元格右下角的填充柄處,當指針變爲小的黑色"+"字型時,按住左鍵,同時根據需要按行或者列方向拖動鼠標,選中所有要輸入相同數據的行或者列的單元格,最後鬆開鼠標即可.這樣數據就會自動複製到剛纔選中的所有單元格了.不過上述方法只適用於輸入的是文本信息.如果要重複填充時間或日期數據時,使用上述方法填充的將會是一個按升序方式產生的數據序列.這時可以先按住"Ctrl"鍵,然後再拖動填充柄,填充的數據纔不會改變. 
2.1.13 利用組合鍵在單元格中快速定位
在修改工作表中的單元格數據時,如果要在單元格中增加數據的話,每次都要先用鼠標定位,然後再用鍵盤輸入,這樣來回地切換很不方便.請問有什麼鍵盤組合鍵嗎 
答:當然有,可以用鍵盤的方向鍵來選擇單元格,然後按下"F2"鍵.這樣單元格就會自動轉換輸入模式,同時光標也自動定位在該單元格的最後面,直接輸入數據就可以了.
2.1.14 在信息輸入前就給予提示 
希望在用戶爲單元格輸入信息時,系統能自動的給予一些必要的提示,這樣不但可以減少信息輸入的錯誤,還可以減少修改所花費的時間.請問該如何實現 
答:可以按如下操作:首先選擇需要給予輸入提示信息的所有單元格.然後執行"數據"菜單中的"有效性"命令,在彈出的對話框中選擇"輸入信息"選項卡.接着在"標題"和"輸入信息"文本框中輸入提示信息的標題和內容即可.
2.1.15 正確顯示百分數
在單元格中輸入一個百分數(如10%),按下回車鍵後顯示的卻是0.1.請問該如何設置才能正確顯示百分數 
答:出現這種情況的原因是因爲所輸入單元格的數據被強制定義成數值類型了,只要更改其類型爲"常規"或"百分數"即可.操作如下:選擇該單元格,然後單擊"格式"菜單中的"單元格"命令,在彈出的對話框中選擇"數字"選項卡,再在"分類"欄中把其類型改爲上述類型中的一種即可.
2.1.16 巧做設置,使公式更加明瞭
在工作表的公式中,我們經常是通過單元格標號來引用數據的,如 "F2=A2+B2+C2+D2".這樣很難一下子瞭解公式具體的內容.有沒有方法用文字來取代單元格的符號,讓公式更直觀些呢 
答:這個想法的確很不錯,當然也是可以實現的.可以按下列步驟來操作:例如在一個特定的數據庫工作表中,一般每一列數據都是同一個字段下的.可以先爲每一列數據設置好相應字段名(如:語文,數學,外語,總分等).再單擊"工具"菜單中的"選項"命令,選擇"重新計算"選項卡.在"工作簿選項"區域中選擇"接受公式標誌"複選框.
最後單擊"確定"按鈕.這樣如果要利用公式計算時,可以直接在公式中輸入字段名稱來表示了,例如:總分=語文+數學+外語.
2.1.17 在連續單元格中自動輸入
等比數據序列
請問有什麼好的方法來輸入一個較大的等比序列嗎 
答:可以通過填充的方法來實現.具體操作如下:首先在第一個單元格中輸入該序列的起始值,然後通過拖動操作選擇要填充的所有單元格.再依次單擊"編輯"菜單中的"填充"項下的"序列"命令.在彈出的"序列"對話框中,再選擇"類型"中"等比序列"單選按鈕,再在"步長"文本框中輸入等比序列的比值.最後還要在"終止值"文本框中輸入一個數字.不一定要是該序列的最後一個值,只要是一個比最後一個數大的數字就可以了.最後單擊"確定"按鈕即可.這樣系統就自動將序列按照要求填充完畢.
2.1.18 選擇大範圍的單元格區域
由於屏幕大小的侷限性,如果利用鼠標拖動操作,總是無法一次性準確地選擇大於屏幕顯示範圍的單元格區域.請問有什麼別的好方法嗎 
答:當然有.可以試試如下操作:首先在"名稱"框(就是公式輸入欄fx左邊的輸入框)中輸入該操作區域的起始單元格名稱代號,然後輸入該操作區域的最後一個單元格名稱代號,中間用":"冒號分開.最後按下"Enter"鍵,這樣以這兩個單元格爲對角的長方形區域就會被快速的選定.
2.1.19 爲修改後的工作表添加批註
想在對工作表文檔進行修改的同時,在修改處添加批註,以方便日後查閱.請問該如何操作 
答:爲修改添加批註是很容易實現的.具體操作如下:首先選擇已經修改過的單元格,然後單擊"插入"菜單中的"插入批註"命令.這時在該單元格旁邊會彈出一個黃色的文本輸入框,輸入框最上邊會自動顯示系統安裝時使用的用戶名字,當然也可以改爲當前使用者的名字.在光標處就可以輸入要添加的批註了.輸入完成後鼠標單擊任意位置,批註文本框就會自動隱藏起來.這時在該單元格的右上角部位會多出一個紅色的小三角形符號,當鼠標移動至該單元格上時,會自動彈出剛纔添加的批註內容.同時還可以用鼠標右鍵單擊該單元格,在彈出的菜單中通過"編輯批註"和"清除批註"命令來進行其他的修改操作.
2.1.20 隱藏行或列的其他方法
請問要實現行或者列的隱藏有什麼其他好的方法嗎 
答:要實現行或者列的隱藏除了利用"隱藏"命令外,還有以下幾種方法可以實現.其中最簡單的就是直接拖動鼠標來實現.先移動鼠標指針至要隱藏的行或者列的最下邊或最右邊,當鼠標指針變成了一個黑色的帶有上下箭頭的"+"字狀時.按下鼠標左鍵,然後拖動鼠標使其不可以見即可.當然也可以通過鍵盤組合鍵來操作完成:按下組合鍵"Ctrl+9"隱藏的是行;按下組合鍵"Ctrl+0"隱藏列.如果要取消隱藏,只需要再同時按下"Shift"鍵,即同時按下"Ctrl+Shift+9","Ctrl+Shift+0"組合鍵.
當然如果要隱藏的行或者列比較多時,用這上述兩種方法還是顯得有點麻煩,這時可以試試利用"Shift+Alt+→(右方向鍵)"組合鍵來隱藏.首先利用"Ctrl"鍵來選擇所有要隱藏的行或者列,然後同時按下"Shift+Alt+→(右方向鍵)"組合鍵,這時會彈出"創建組"對話框,詢問要創建的組是行還是列.如何隱藏的是行就選擇"行"單選按鈕,如果隱藏的是列就選擇"列"單選按鈕.最後單擊"確定"按鈕完成.這時在工作表中行或者列的序號處會產生一條黑線,它將剛纔選擇的所有行或列連接起來,同時在末端會有一個"-"符號.單擊該符號,則所選的行或者列就會組成一個組,從而達到隱藏的效果.同時"-"號會變成"+"號.要恢復隱藏,只要再單擊該"+"號即可.或者按下數字"1"或"2"也可以實現.如果要取消分組模式.只需同時按下"Shift+Alt+←(左方向鍵)"組合即可.
2.1.21 恢復被隱藏的行或列的快捷方式
請問除了使用"取消隱藏"命令外,還有什麼更快捷的方法來實現找出已經被隱藏的行或列嗎 
答:要取消隱藏的行其實有更簡單的方法.例如要恢復被隱藏的第2行,可以執行如下操作:首先將鼠標指針移動到第1行和第3行之間的位置,當鼠標的指針變成橫向爲"="號,縱向爲黑色實心雙箭頭的十字形狀時,執行用鼠標左鍵雙擊操作,這樣被隱藏的行就會顯示出來了.這種方法比用"取消隱藏"命令要快捷的多.取消列的隱藏方法同上所述.
2.1.22 在常規格式下輸入分數
當在工作表的單元格中輸入如"2/5,6/7"等形式的分數時.系統都會自動將其轉換爲日期格式.所以每次都要先將單元格格式設置爲"分數"後纔可以正確顯示.難道就沒有辦法可以在常規格式下直接輸入分數嗎 
答:在"常規"模式實現分數的輸入是可以實現的,而且還是非常簡單的.只要在輸入分數前,先輸入"0+空格符".然後再在後面輸入分數即可,如輸入"0□2/3"(□表示空格)即正確顯示爲"2/3".需要注意的是,利用此方法輸入的分數的分母不能超過99,否則輸入結果顯示將被替換爲分母小於或等於99的分數.如輸入"2/101",系統會將其轉換爲近似值"1/50".
2.1.23 在單元格中自動輸入時間和日期
日期和時間的輸入形式太麻煩,而且有時記不清楚.請問有什麼方法讓系統自動輸入時間和日期嗎 
答:可以執行以下方法來實現:選中需輸入的單元格,直接按下"Ctrl+;"組合鍵可輸入當前日期;如果直接按下"Ctrl+Shift+;"組合鍵即可輸入當前時間;當然也可以在單元格中先輸入其他文字然後再按以上組合鍵,如先輸入"當前時間爲:"再按下"Ctrl+ Shift+;"組合鍵,就會在單元格中顯示"當前時間爲:16:27"這樣的結果.
以上方法美中不足的是輸入的時間和日期是固定不變的.如果希望日期,時間隨當前系統的日期,時間自動更新,則可以利用函數來實現.輸入"=today()"得到當前系統日期的函數,輸入"=now()"得到當前系統時間和日期的函數.
2.1.24 移動單元格中公式計算的結果
一般地,可以通過在單元格中輸入公式自動計算出數據的結果.但是將這個計算結果移動到其他單元格時,結果都變成了"0",這是怎麼回事 該如何解決 
答:可以通過以下操作來解決:單擊"工具"菜單中的"選項"命令,再選擇"重新計算"選項卡.選擇"手動重算"複選框,同時取消選擇"保存前自動重算"複選框,使其無效,最後單擊"確定"按鈕即可.這樣就可以通過"複製"和"粘貼"命令來正確移動公式計算出的結果了.
2.1.25 以圖片格式插入Word中的文本內容
請問在不用截圖軟件的情況下,可以直接將Word文檔中的某些文本內容以圖片格式插入工作表的單元格中嗎 
答:當然可以,可以直接利用系統的內置功能實現文本內容到圖片格式的轉換.具體操作如下:在Word編輯界面,先選定需要插入的文字內容,然後利用"複製"命令將其複製到系統剪貼板中.然後在Excel環境下,選定要插入該圖片的單元格,再按住"Shift"鍵,同時單擊"編輯"菜單中的"粘貼圖片"命令.這樣即可將剪貼板中的內容轉換成圖片格式並插入到工作表中.如果選擇的是"粘貼鏈接圖片"命令,則將圖片和工作表建立鏈接關係.
2.1.26 求和函數的快捷輸入法
求和函數"SUM"可能是我們在工作表文檔中使用最多的函數了.請問有什麼好辦法來快速輸入嗎 
答:其實"SUM"函數不必每次都直接輸入的,可以單擊工具欄中的"∑"符號按鈕來快速輸入.當然還有更快捷的鍵盤輸入,先選擇單元格,然後按下"Alt+="組合鍵即可.這樣不但可以快速輸入函數名稱,同時還能智能地確認函數的參數.
2.1.27 快速創建任意大小的連續數據矩陣
要創建一個較大的數據矩陣,且矩陣中的數據是一個有規律的等差序列,請問有什麼好的方法來自動實現嗎 
答:要創建這樣的有規律的數據矩陣,可以試試以下所述的方法:假設要創建一個M×N的矩陣,而且矩陣的第一個單元格是A1.先在A1單元格中輸入矩陣的第一個數據元素,再在A2單元格中輸入下一個數據元素.然後再定位到B1單元格,在其中輸入矩陣的第N+1個數據元素,在B2單元格中輸入第N+2個數據元素,這樣也就確定了該矩陣的前兩行和前兩列的四個數據.接下來用鼠標選擇這四個單元格,移動鼠標指針至該單元格的右下角填充柄處,當指針變成一個實心的黑色小十字狀時,按下鼠標左鍵延行方向拖動至矩陣的最後一列.鬆開鼠標後,會生成一個2行N列的數據矩陣.同樣的再選擇該矩陣,移動指針到該矩陣的右下角填充柄處,當鼠標再次變成一個實心的黑色十字狀時,延列方向執行拖動操作至第M行.這樣整個矩陣就自動填充完了.
2.1.28 組合鍵方式爲單元格文字
添加雙下劃線
系統提供的下劃線按鈕只能爲單元格文字設置下劃線.而如果要設置雙下劃線,則要利用菜單命令才能完成,請問有更快捷的方法嗎 
答:當然有,設置雙下劃線可以直接利用鍵盤快捷完成.方法就是先按住"Shift"鍵,然後再單擊工具欄上的下劃線按鈕.
2.1.29 爲單元格文字添加漢語拼音
爲什麼利用"格式"菜單中"拼音信息"下的"編輯"命令爲單元格漢字加註漢語拼音後,系統什麼都沒顯示 
答:那是因爲系統默認的格式是將拼音隱藏的.只要再執行"拼音信息"下的"顯示或隱藏"命令就可以看到了.或者可以先執行"顯示或隱藏"命令,然後再利用"編輯"命令來輸入拼音信息.同時還可以通過"設置"命令來對加註的拼音進行字體大小,對齊方式等相關的設置.
2.1.30 快速選中所有數據類型相同的單元格
要選擇數據類型都是"數字"的單元格來進行操作,可是這些單元格都是分散的,請問有什麼好的方法把它們全部找出來嗎 
答:可以利用"定位"命令來快速地找到這些單元格.具體操作如下:執行"編輯"菜單中的"定位"命令.在彈出的"定位"對話框中,單擊"定位條件"按鈕.接着會彈出一個"定位條件"對話框,根據需要,選擇設置好要查找的單元格類型.例如先選擇"常量"項,然後再複選上"數字"項,最後單擊"確定"按鈕完成即可.這樣符合上述條件的單元格全部會被選中.
2.1.31 利用"記錄單"爲行或列添加數據
如果工作表文檔中數據較多,由於屏幕大小的限制,在輸入超過顯示區域單元格的數據時,一般都是要利用滾動條來定位顯示區域.這樣操作往往不是很準確,請問有更好的方法來實現嗎 
答:可以利用"記錄單"方式來直接輸入數據,而無需理會單元格位置的變化.不過具體操作時,行和列的輸入稍有不同,下面一一來說明:
對於列數據的輸入.先單擊列標題來選擇整列,然後單擊"數據"菜單中的"記錄單"命令,這時系統會彈出一個對話框,直接單擊"確定"按鈕,在彈出的另一對話框中進行數據輸入即可,輸入完成後,按"Enter"鍵自動跳轉至下一空白單元格中(當然也可以單擊滾動條下邊的黑色三角符號來跳轉),繼續輸入數據.輸入完成後單擊"關閉"按鈕完成即可.
如果是要按行方向來輸入數據,操作與前面稍有不同.首先不能利用單擊行標記的方法來選擇整行,否則會因爲字段太多而出錯,所以只能用拖動操作來選擇.在數據輸入時,不能用"Enter"鍵來跳轉到下一個空白單元格,因爲如果按此鍵,系統會跳轉到下一行來輸入數據,但是可以用"Tab"鍵來跳轉.
最後需要共同注意的是,不管是行輸入或是列輸入數據,由於系統默認是將第一行和第一列作爲記錄名稱和字段名稱,所以所有輸入的數據都是從第二行和第二列開始的.
2.1.32 不輸入公式直接查看結果
當要計算工作表中的數據時,一般都是利用公式或函數來得到結果.可是假如僅僅只是想查看一下結果,並不需要在單元格中建立記錄數據.請問有什麼辦法實現嗎 
答:可以選擇要計算結果的所有單元格,然後看看編輯窗口最下方的狀態欄上,是不是自動顯示了"求和= "的字樣呢 如果還想查看其他的運算結果,只需移動鼠標指針到狀態欄任意區域,然後用鼠標右鍵單擊,在彈出的菜單中單擊要進行相應的運算操作命令,在狀態欄就會顯示相應的計算結果.這些操作包括:均值,計數,計數值,求和等.
2.1.33 批量爲單元格數據添加單位
在許多的場合中,我們都需要爲單元格數據添加單位,如果每輸入一個數據,就添加一個單位,這樣操作起來實在太麻煩費事了.請問可以在數據輸入後一次性批量完成嗎 
答:可以按以下操作來實現批量輸入單位:選中所有要添加單位的單元格,然後單擊"格式"菜單中的"單元格"命令,在彈出的對話框中選擇"數字"選項卡,然後在"分類"列表中選擇"自定義"項.再在右邊的"類型"列表選擇框中選擇適合的數字格式(例如:如果是小數形式,則選擇"0.00"),在"類型"文本框中的該數字格式後添加"單位名稱"(如:"元",注意是英文輸入法中的引號).
最後單擊"確定"按鈕返回即可.這樣剛纔選擇的所有單元格數據後都自動加上設置好的單位了.
2.1.34 啓用記憶功能輸入單元格數據
在一些網頁填寫註冊信息時,如果輸入的內容以前曾經輸入過,只要輸入前面一個或幾個字符,系統就會自動輸入其餘的內容.請問在Excel的單元格數據輸入有這種功能嗎 
答:這種功能叫做自動記憶功能.在Excel中也是可以實現的.具體設置如下:單擊"工具"菜單中的"選項"命令,在彈出的對話框中單擊"編輯"選項卡,選擇"記憶式鍵入"複選框.最後單擊"確定"按鈕即可.
2.1.35 利用"選擇性粘貼"命令將文本
格式轉化爲數值
在通過導入操作得到的工作表數據中,許多數據格式都是文本格式的,無法利用函數或公式來直接進行運算.但是如果一個一個地改又很麻煩,請問有什麼更好的辦法來實現轉換嗎 
答:對這種通過特殊途徑得到的數據文檔,可以通過以下方法來實現快速批量轉換格式:先在該數據文檔的空白單元格中輸入一個數值型數據如"1",然後利用"複製"命令將其複製到剪貼板中.接着選擇所有需要格式轉換的單元格,再單擊"編輯"菜單中的"選擇性粘貼"命令,在彈出的"選擇性粘貼"對話框中選擇"運算"項下的"乘"或者"除"單選按鈕.
最後單擊"確定"按鈕完成即可.這樣,所有的單元格都會轉換爲數值格式了.
2.1.36 去除單元格中的"0"
有時在一個工作表中,有許多的"0"值的單元格,這些單元格沒有什麼實際意義,而且還影響整個工作表的美觀,請問可以將這些"0"去掉,而又不影響工作表的數據的完整嗎 
答:要想去掉這些"0"值單元格,而又不影響工作表數據的完整性,就只有將它們隱藏起來.具體實現方法如下:單擊"工具"菜單中的"選項"命令,在彈出的對話框中選擇"視圖"選項卡,在"窗口選項"區域中取消選擇"零值"複選框,最後單擊"確定"按鈕完成即可.
當然這樣工作表中所有的"0"都會被隱藏起來.如果只希望隱藏部分單元格中的"0",可以執行以下操作:首先選擇要隱藏的單元格,然後單擊"格式"菜單中的"單元格"命令.在彈出的對話框中選擇"數字"選項卡,再在"分類"列表框中選擇"自定義"項,在右邊的"類型"輸入框中輸入"0;0;;@"(全部符號都在英文輸入法狀態輸入,雙引號不要輸入).最後單擊"確定"按鈕完成即可.
2.1.37 在數據錄入時自動切換輸入法
由於工作表中數據類型的複雜和多變性,所以常常要在各種輸入法之間來回切換,請問可以實現一定位到某個單元格系統就會自動切換到相應的輸入法嗎 
答:可以通過下面的設置來實現它:首先選中使用同一種輸入法的所有單元格,再單擊執行"數據"菜單上的"有效性"命令,在彈出的對話框中選擇"輸入法模式"選項卡,在"輸入法模式"下拉列表中,根據需要進行設置.如要使用中文字符的話,就選擇"打開",如要使用英文輸入模式,就選擇"關閉(英文模式)".
2.1.38 消除運算結果的系統誤差
在對一些帶小數的數據進行統計中,系統計算後得出的結果往往和我們運算得到的值有一定的出入.爲什麼出現這種問題 該如何解決呢 
答:出現這種問題的原因是,在默認情況下,系統對中間運算得出的帶有小數結果的顯示都是經過了四捨五入操作後給出的近似值.而在其他如求和,求差等運算過程中,使用的是更精確的實際值,所以和用屏幕顯示值進行運算得出的結果是有出入的.要想解決這一問題,只要更改默認設置即可,具體操作如下:單擊"工具"菜單中的"選項"命令,再選擇"重新計算"選項卡,找到並取消選擇"以顯示值爲準(P)"複選框,最後單擊"確定"按鈕完成.這樣系統就會直接依據顯示結果來進行運算了.
2.1.39 爲數據輸入設置下拉選擇列表
爲了統一輸入的格式,有時希望用戶在輸入數據時,只需要選擇設置好的單元格內容即可,而不要自行重新輸入.有沒有辦法爲單元格設置一個供選擇的類似下拉列表的選擇框 
答:這是完全可以的.具體操作如下:首先要選擇需要建立自動選擇列表的單元格,然後單擊"數據"菜單欄中的"有效性"命令.再選擇"設置"選項卡,在"允許"下拉列表中選擇"序列"項.這時對話框會增加"來源"項,在其下面的輸入框中,輸入供用戶選擇的序列.不同的選擇項用","號分開(是在英文輸入法狀態下的逗號).如輸入"滿意,一般,不滿意.
最後單擊"確定"按鈕完成即可.這樣設置後,當用鼠標單擊單元格時,在單元格右邊會出現一個向下的黑色箭頭,單擊該箭頭就會彈出一個選擇輸入列表了.
2.1.40 自動填充等差序列
在工作表中爲數據庫添加記錄序列號是經常要執行的操作.可是有時如果記錄太多,一個一個地輸入就會顯得費事.請問可以讓系統自動完成嗎 
答:要輸入一些這樣有規律的數據,使用以下方法將會節省許多的時間和精力:首先在起始單元格中輸入第一個數據,例如輸入"1".然後在第二個單元格中輸入第二個數據,如輸入"3",這兩個數據的大小差就是這個數據序列等差比.選擇這兩個單元格,移動指針至該區域的右下角的填充柄處.當鼠標變成一個黑色的實心十字形狀時,按住鼠標左鍵執行拖動操作,到最後一個單元格處放手.這樣系統就自動按照等差比值填充好其他單元格.如果要設置的一個等差比爲"1"的數據序列,只要輸入起始的第一個數據,然後按住"Ctrl"鍵,再移動鼠標這至填充柄處,這時鼠標指針會變成兩個小的黑色十字狀.接着再執行與上述同樣的拖動操作即可完成.
2.1.41 爲不相連的單元格快速輸入相同信息
由於單元格的不連續分佈,無法利用前面介紹的方法來快速填充,請問有什麼其他的方法來實現嗎 
答:如果要輸入相同內容的單元格不連續,還可以使用下面的方法來實現快速輸入:首先按住"Ctrl"鍵來選擇好所有的單元格,然後將光標定位到編輯欄(就是"fx"圖標後面的輸入欄)中,輸入需要的數據.輸入完成後按住"Ctrl"鍵不放,然後再按下"Enter"鍵,這樣輸入的數據就會自動填充到所有剛纔選擇的單元格.
2.1.42 在多個工作表中同時輸入相同數據
如果要在不同的工作表中輸入相同的內容,有什麼快捷的方法嗎 
答:可以試試以下方法來實現:先按住"Ctrl"鍵,然後用鼠標單擊左下腳的工作表名稱來選定所有的工作表.這樣所選擇的工作表就會自動成爲一個"成組工作表".只要在任意一個工作表中輸入數據,其他的工作表也會增加相同的數據內容.如果要取消"成組工作表"模式,只要在任一工作表名稱上單擊鼠標右鍵,在彈出的菜單中選擇"取消成組工作表"選項即可. 
2.2.1 如何在公式中引用其他工作表
單元格數據
公式中一般可以用單元格符號來引用單元格的內容,但是都是在同一個工作表中操作的.如果要在當前工作表公式中引用別的工作表中的單元格,那該如何實現呢 
答:要引用其他工作表的單元格可以使用以下方法格式來表示:工作表名稱+"!"+單元格名稱.如要將Sheet1工作表中的A1單元格的數據和Sheet2工作表中的B1單元格的數據相加,可以表示爲:"Sheet1!A1+Sheet2!B1".
2.2.2 同時對多個單元格執行相同運算
請問有什麼好的方法來實現一步完成對多個單元格數據執行同樣的運算嗎 
答:可以執行如下操作:假設要對多個單元格執行全部加"1"的相同操作.首先在空白單元格中輸入要執行運算的操作數"1",再利用"複製"按鈕將其添加到剪貼板.然後選擇所有要進行運算的單元格,再單擊"編輯"菜單中的"選擇性粘貼"命令.在彈出的對話框中單擊選擇"運算"選項區域下的"加"單選按鈕.
最後單擊"確定"按鈕完成.
2.2.3 利用單步執行檢查公式錯誤
Excel中提供的函數是十分豐富的.但是在使用一些比較複製的嵌套函數時,一旦出現錯誤,要找到錯誤原因是比較困難的.請問有什麼好的方法來查找公式函數中的錯誤嗎 
答:可以利用"公式求值"功能來一步一步執行函數,這是一個準確找出錯誤的好辦法.由於"公式求值"不是系統默認的按鈕,所以需要先將其添加到工具欄.單擊"工具"菜單中的"自定義"命令,在彈出的對話框中的選擇"命令"選項卡.再在"類別"列表中選擇"工具"項,在"命令"列表中選擇"公式求值"項,最後將其拖到工具欄上.接下來選擇包含函數的單元格,然後單擊"公式求值"按鈕.在彈出的對話框中,會用下劃線表示公式中的執行步驟.
通過"求值"按鈕,可以一步步地執行公式,同時觀察下劃線表達式的運算結果是否正確,從而找出公式的錯誤之處.
2.2.4 快捷輸入函數參數
系統提供的函數一般都有好多不同的參數,請問如何在輸入函數時能快速地查閱該函數的各個參數功能呢 
答:可以利用組合鍵來實現:先在編輯欄中輸入函數,完成後按下"Ctrl+A"組合鍵,系統就會自動彈出該函數的參數輸入選擇框,可以直接利用鼠標單擊來選擇各個參數.
2.2.5 函數中快速引用單元格
在函數使用時,常常需要用單元格名稱來引用該單元格的數據.如果要引用的單元格太多,太散的話,那麼逐個輸入就會很麻煩.請問有什麼簡捷的方法嗎 
答:遇到這種情況時,可以試試下面的方法,利用鼠標直接選取引用的單元格.具體操作如下:以SUM函數爲例.我們在公式編輯欄中直接輸入"=SUM()",然後再將光標定位至小括號內.接着按住"Ctrl"鍵,在工作表中利用鼠標選擇所有參與運算的單元格.這時會發現,所有被選擇的單元格都自動的填入了函數中,並用","自動分隔開.輸入完成後按"Enter"鍵結束即可.
2.2.6 組合鍵隱藏單元格中的公式
如果要隱藏單元格中的公式,除了用系統命令外,還有什麼更快捷的方法嗎 
答:可以使用以下組合鍵來隱藏公式.選擇要隱藏公式的單元格,然後按下"Ctrl+`"(數字"1"鍵左邊的那個按鍵)組合鍵即可.如果要再次顯示隱藏的公式,只要再按一次上述組合鍵即可重新恢復顯示.
2.2.7 快速找到所需要的函數 
函數應用是Excel中經常要使用的.可是如果對系統提供的函數不是很熟悉,請問有什麼辦法可以快速找到需要的函數嗎 
答:對於沒學習過計算機編程的人來說,系統提供的函數的確是一個比較頭痛的問題.不過使用下述方法可以非常容易地找到你需要的函數:假如需要利用函數對工作表數據進行排序操作,可以先單擊工具欄的"插入函數"按鈕,在彈出的對話框的"搜索函數"項下面直接輸入所要的函數功能,如直接輸入"排序"兩個字.然後單擊"轉到"按鈕,在下面的"選擇函數"對話框中就會列出好幾條用於排序的函數.單擊某個函數,在對話框最下面就會顯示該函數的具體功能
如果覺得還不夠詳細,還可以單擊"有關該函數的幫助"鏈接來查看更詳細的描述.這樣就再也不會爲不懂函數而頭痛了.
2.2.8 利用"數據透視表"對工作表中
數據進行統計
對工作表中數據進行統計是經常需要的.一般情況我們都是使用菜單命令或函數來進行數據的統計的.可是如果要統計的工作表中記錄很多,而且需要統計的項目也很多時,使用這種方法就顯得力不從心了.請問還有什麼更好的方法來實現嗎 
答:對於一些大型的工作表文件,而且統計數據的條件比較複製的情況下,可以使用數據透視表來進行統計,這種方法不但功能強大,而且操作起來比用函數,公式簡單多了.下面就來統計一個包含"操行評定","性別","姓名"等字段名稱的數據文件中,操行評定各個級別中男生與女生的人數.具體操作如下:首先打開工作表,選擇整個工作表數據,然後單擊"數據"菜單中的"數據透視表和數據透視圖…"命令項.接着按"數據透視表和數據透視圖嚮導"提示進行操作.在彈出的步驟一設置對話框中的"請指定待分析數據的數據源類型"中選擇"Microsoft Excel數據列表或數據庫"項.在"所需創建的報表類型"中選擇"數據透視表"項,然後單擊"下一步"按鈕.接着會彈出第二個對話框,直接單擊"下一步"按鈕.在彈出第三個對話框中,在"數據透視表顯示位置"選擇第一項"新建工作表",最後單擊"完成"按鈕.然後從右邊的"數據透視表字段列表"中將"性別"字段拖至"請將行字段拖至此處";將"操行評定" 字段拖至"請將列字段拖至此處";將"姓名"字段拖至"請將數據項拖至此處".這樣系統將自動統計出所有操行評定級別的男生和女生的數量.
這樣統計出的結果將作爲一個新的工作表保存在當前文件中,方便隨時查閱.
2.2.9 開啓函數輸入時的參數提示
平時在手動輸入函數時,在輸入過程中屏幕會顯示一個提示條,可不知爲什麼現在沒有了.請問該如何開啓這種提示功能 
答:要開啓函數的參數提示功能可以執行以下操作:單擊"工具"菜單中的"選項"命令,在彈出的對話框中選擇"常規"選項卡,然後選擇"函數工具提示"複選框即可.
2.2.10 矩陣型數據區域求和的快速實現
在一個比較大的工作表中,需要對輸入的數據進行橫向和縱向的求和,請問有什麼快捷的方法嗎 
答:對於這種矩陣形狀的數據進行行和列的求和,可以使用如下快捷的方法:如要對數據矩陣進行橫向求和,首先用鼠標拖動操作選擇整個數據矩陣,同時還要多選擇一空白列.然後單擊工具欄上的"∑"按鈕.這樣會發現多選擇的那一個空白列中已經自動填入了對應行求和得到的結果了.同樣,如果要按列方向求和,則只要多選擇一行;如果要同時對行和列進行求和,就多選擇一行和一列,最後單擊"∑"按鈕即可.不過用這種方法來求和時,必須保證所有的單元格都是直接輸入的數據,不能是通過函數式計算得到的數據.否則在該單元格前的所有單元格數據都不會參與求和.
2.3.1 將單元格中的文本鏈接到圖表文本框
希望系統在圖標文本框中顯示某個單元格中的內容,同時還要保證它們的修改保持同步,這樣可以實現嗎 
答:這個是完全可以實現的,只要將該單元格與圖表文本框建立鏈接關係就行.具體操作如下:首先單擊選中該圖表,然後在系統的編輯欄中輸入一個"="符號.再單擊選中需要鏈接的單元格,最後按下"Enter"鍵即可完成.此時在圖表中會自動生成一個文本框,內容就是剛纔選中的單元格中的內容.如果下次要修改該單元格的內容時,圖表中文本框的內容也會相應地被修改.
2.3.2 重新設置系統默認的圖表
當用組合鍵創建圖表時,系統總是給出一個相同類型的圖表.請問可以重新設置系統默認給出的圖表類型嗎 
答:要修改系統的這種默認圖表的類型,可以執行以下操作:首先選擇一個創建好的圖表,然後單擊鼠標右鍵,在彈出的菜單中選擇"圖表類型"選項,再在彈出的對話框中選擇一種希望的圖表類型,當然也可以選擇自己設置定義的類型,然後單擊"設置爲默認圖表"按鈕完成即可.
2.3.3 準確選擇圖表中元素的技巧
圖表中的元素是很多的,而且它們的位置常常連接緊密,元素的覆蓋範圍又小,所以用鼠標直接單擊選取實在不容易選中.請問有什麼更好的辦法嗎 
答:鼠標對選擇圖表元素實在有點不太方便,但是如果用鍵盤來操作就會又快又準.具體操作如下:首先利用鼠標左鍵雙擊該圖表,使其處於編輯狀態,然後利用上,下方向鍵來選擇不同的元素組,利用左,右方向鍵在相同組的元素
發佈了21 篇原創文章 · 獲贊 9 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章