發表於 Learning

最近讀的書

最近讀的書都是跟Excel Word PowerPoint有關的工具書

  • Excel VBA基礎必修課
  • Excel VBA巨集的職場效率術
  • 看!就是比你早下班 Office 2016泡麵速成技
  • 看!就是比你早下班 Excel 2010 VBA高手問題解決法

VBA很難,基本上我就是整本書看完挑自己會用得到的功能放入我的工具列。

目前列了幾個,就像下面這樣。都算是比較基礎的功能,因為一般在使用上我會需要的進階功能也不多。

因為我常常需要輸入當天的日期,所以我做了一個「當日」的巨集。內容如下:

Sub 當日()
Dim rng As Range
Set rng = Selection
rng.Value = Now()
Set rng = Nothing
End Sub

有時候可能要把所有註解都另外取出來,所以做了「取出註解」的巨集。內容如下:

Sub 取出註解()
For Each c In ActiveSheet.Comments
i = i + 1
Sheets("註解").Cells(i, 1) = c.Text
Next
End Sub

因為有時候希望各工作表依名稱排序,因此做了兩個巨集來應用。

首先是「列出目錄」。內容如下:

Sub 列出目錄()
Dim Sht As Worksheet, k&
[a:a].ClearContents
[a:a].NumberFormat = "@"
[a1] = "index"
k = 1
For Each Sht In Worksheets
k = k + 1
Cells(k, 1) = Sht.Name
Next
End Sub

接著是「重新排序工作表」。內容如下:

Sub 重新排序工作表()
Dim Sht As Worksheet, Shtname$, i&
Set Sht = ActiveSheet
For i = 2 To Sht.Cells(Rows.Count, 1).End(xlUp).Row

Shtname = Sht.Cells(i, 1).Value
Worksheets(Shtname).Move after:=Worksheets(i - 1)
Next
Sht.Activate
End Sub

使用上要注意的是,列出目錄後要先用排序功能將名稱依需求排序。

接著才是點選「 重新排序工作表 」,讓巨集抓取排序過的名稱。

不計算隱藏」,這個巨集是在加總時忽略隱藏的儲存格。 內容如下:

Sub 不計算隱藏()
Dim rng As Range
Set rng = Selection
x = rng.Rows
Total = 0
For Each cell In x
If ActiveCell.Rows.Hidden = False Then
Total = Total + ActiveCell.Value
End If
ActiveCell.Offset(1, 0).Select
Next
ActiveCell.Value = Total
End Sub

欄寬調整」,這個聚集使用表單,依填入的數值自動變更列高和欄寬,表單內容如下:

Private Sub ComboBox2_Change()
End Sub
Private Sub CommandButton1_Click()
Dim rng As Range
Set rng = Selection
Selection.ColumnWidth = 4.13 * Me.mycol
Selection.RowHeight = 28.5 * Me.myrow
Set rng = Nothing
End Sub
Private Sub userform1()
mycol.AddItem “請選擇….."
myrow.AddItem “請選擇….."
For i = 1 To 10
mycol.AddItem i
myrow.AddItem i
Next
End Sub

主程式的內容如下:

Sub 欄寬調整()
userform1.Show
End Sub

另外就是透過公式來呈現我想要的內容。

一個是甘特圖的呈現,我覺得這個真的超聰明的啦!以往製作進度說明的圖時,都要自己繪製,非常沒有效率也不聰明,透過這個公式就能輕易完成進度圖。

首先在頂端列輸入任務、開始日期、結束日期、月曆日期,接著在第2列依序輸入任務名稱、開始日期、結束日期,之後選取月曆日期儲存格,設定格式化的條件,在規則的地方輸入公式:=AND(D$1>=$B2,D$1<=$C2)便能將儲存格以甘特圖的方式呈現。

第二招,是自動對應日期出現星期。

因為我要製作的統計表需要呈現日期和星期,以往星期都是自己輸入或是改變儲存格「日期」的呈現方式,但這招可以依據我輸入的日期自動跳出當天的星期,真的有夠方便的!

首先在日期的欄位輸入所要的日期,在星期的欄位輸入:=CHOOSE(WEEKDAY(所指定的儲存格),"日","一","二","三","四","五","六")

如此就會根據日期跑出星期囉!

第三招,活用「定義名稱」。

這個應該也是蠻基礎的功能,但我以往真沒用過,這次學起來後覺得超實用的。

以往如果要選擇不連續的儲存格進行運算,都得一直自己點選儲存格,但這招的話,只要點選一次儲存格接著定義這些儲存格的名稱,以後在這張工作表要用到這些不連續的儲存格就可以直接輸入名稱進行運算。

假設我需要這段期間平日的日數,我就選取這些儲存格,接著定義名稱為「平日日數」。

這樣我就能透過公式:COUNT(平日日數)。來取得日數。

假設我要知道平日總數,我就選取儲存格定義名稱,之後用公式:SUM(平日總數)。就能取得數值。

於是當我想知道平日的平均值時,我便能用公式:AVERAGE(平日總數),取得平均值。

這個做法對於需要不斷使用到同樣儲存格的情況下非常好用。只要輸入幾個字就能選取這些儲存格。

還有一個小招,就是要把整欄或整列的英文變成自己要的形式,可以在旁邊或下方新增一欄或一列,然後用以下的公式,就可以將英文字母的大小寫做變換:
=PROPER(所選儲存格) 變成字首大寫Aaa
=UPPER(所選儲存格) 變成全部大寫AAA
=LOWER(所選儲存格) 變成全部小寫aaa

以上就是最近學到幾個覺得很實用的小招。

未知 的大頭貼

作者:

記錄生活,生活紀錄

發表留言