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