【エクセル時短術】実務で使えるExcel VBA チートシート100選!📚
そんなExcel仕事術を
"100個"お伝えしていきます。
このチートシートの内容を仕事に取り込めば、
こんな状態を実現させることができます。
最終的には、
市場価値の高い人材として転職市場で引っ張りだこ。転職で年収アップ。
そんな状態になることも夢ではありません。
逆に、このExcelチートシートを知らないと
こんな悲惨なことになってしまいます。
そんなことにならないよう、ぜひExcel作業を1分で終わらせるためのエクセルVBA 100個のチートシートを手に入れてください。
業務効率化のため半年の月日をかけて作成した5万文字越えの100個のチートシートのため、全編有料級の有益情報ですが、特別に冒頭部分を公開します。
一つ一つ具体的に解説していきますね。
注意事項・免責事項
1. シートの自動生成とデータ入力
説明
新しいシートを作成し、特定のデータを入力するスクリプトです。
使用例
例えば、月次報告書のテンプレートを自動的に生成するときに使用します。
コード
Sub CreateMonthlyReportSheet()
Dim ws As Worksheet
Dim reportDate As String
reportDate = Format(Date, "yyyy-mm")
' 新しいシートを追加
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "Report_" & reportDate
' テンプレートデータを入力
ws.Range("A1").Value = "Monthly Report"
ws.Range("A2").Value = "Date: " & Date
ws.Range("A3").Value = "Prepared by: [Your Name]"
ws.Range("A5").Value = "Summary"
ws.Range("A6").Value = "Details"
MsgBox "Monthly report sheet created successfully!", vbInformation
End Sub
2. データの自動コピーとペースト
説明
特定の範囲のデータを他のシートにコピーして貼り付けるスクリプトです。
使用例
例えば、週次報告書のデータをマスターシートからコピーする場合に使用します。
コード
Sub CopyDataToReport()
Dim sourceSheet As Worksheet
Dim targetSheet As Worksheet
Dim copyRange As Range
Dim pasteRange As Range
' シートを指定
Set sourceSheet = ThisWorkbook.Sheets("Master")
Set targetSheet = ThisWorkbook.Sheets("WeeklyReport")
' 範囲を指定
Set copyRange = sourceSheet.Range("A1:D10")
Set pasteRange = targetSheet.Range("A1")
' データをコピーして貼り付け
copyRange.Copy Destination:=pasteRange
MsgBox "Data copied successfully!", vbInformation
End Sub
3. 条件に基づく行の削除
説明
特定の条件に基づいて行を削除するスクリプトです。
使用例
例えば、不要なデータをフィルタリングして削除する場合に使用します。
コード
Sub DeleteRowsBasedOnCondition()
Dim ws As Worksheet
Dim i As Long
Set ws = ThisWorkbook.Sheets("Data")
' 最後の行を取得
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 条件に基づいて行を削除
For i = lastRow To 1 Step -1
If ws.Cells(i, 1).Value < 0 Then
ws.Rows(i).Delete
End If
Next i
MsgBox "Rows deleted based on condition!", vbInformation
End Sub
4. メールの自動送信
説明
ExcelからOutlookを使って自動的にEメールを送信するスクリプトです。
使用例
例えば、月次報告書を担当者に自動送信するときに使用します。
コード
Sub SendEmail()
Dim OutlookApp As Object
Dim OutlookMail As Object
' Outlookを起動
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
' メール設定
With OutlookMail
.To = "recipient@example.com"
.Subject = "Monthly Report"
.Body = "Please find the attached monthly report."
.Attachments.Add ThisWorkbook.FullName
.Send
End With
MsgBox "Email sent successfully!", vbInformation
End Sub
5. データの重複チェックと削除
説明
指定範囲内の重複データをチェックして削除するスクリプトです。
使用例
例えば、Excelファイルを提出・納品する前に重複ミスがないか最終確認する場合に使用します。
コード
Sub RemoveDuplicates()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("CustomerData")
' 重複を削除
ws.Range("A1:D100").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
MsgBox "Duplicates removed!", vbInformation
End Sub
6. グラフの自動作成
説明
データ範囲からグラフを自動的に作成するスクリプトです。
使用例
例えば、売上データに基づいて売上推移グラフを作成する場合に使用します。
コード
Sub CreateSalesChart()
Dim ws As Worksheet
Dim chartObj As ChartObject
Set ws = ThisWorkbook.Sheets("SalesData")
' グラフオブジェクトを追加
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
' グラフの設定
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:B10")
.ChartType = xlLine
.HasTitle = True
.ChartTitle.Text = "Sales Trend"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Month"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Sales"
End With
MsgBox "Sales chart created successfully!", vbInformation
End Sub
7. フォルダ内のファイルリスト取得
説明
指定フォルダ内のすべてのファイル名を取得し、シートに一覧表示するスクリプトです。
使用例
例えば、ファイルリストをシートで管理する場合に使用します。
コード
Sub ListFilesInFolder()
Dim folderPath As String
Dim fileName As String
Dim ws As Worksheet
Dim i As Long
' フォルダパスを指定
folderPath = "C:\Your\Folder\Path"
' シートを指定
Set ws = ThisWorkbook.Sheets("FileList")
' 初期化
ws.Cells.Clear
ws.Cells(1, 1).Value = "File Name"
i = 2
' ファイルリストを取得
fileName = Dir(folderPath & "\*.*")
Do While fileName <> ""
ws.Cells(i, 1).Value = fileName
i = i + 1
fileName = Dir
Loop
MsgBox "File list retrieved successfully!", vbInformation
End Sub
8. データのソート
説明
指定範囲内のデータを特定の列を基準にソートするスクリプトです。
使用例
例えば、売上データを売上金額の降順にソートする場合に使用します。
コード
Sub SortData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("SalesData")
' データ範囲をソート
ws.Range("A1:D100").Sort Key1:=ws.Range("B1"), Order1:=xlDescending, Header:=xlYes
MsgBox "Data sorted successfully!", vbInformation
End Sub
9. シート間データの一致チェック
説明
二つのシート間でデータの一致をチェックし、結果を表示するスクリプトです。
使用例
例えば、異なる月の売上データの一致をチェックする場合に使用します。
コード
Sub CompareSheets()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Long
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim matchFound As Boolean
' シートを指定
Set ws1 = ThisWorkbook.Sheets("Month1")
Set ws2 = ThisWorkbook.Sheets("Month2")
' 最後の行を取得
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
' 一致チェック
matchFound = False
For i = 1 To lastRow1
If ws1.Cells(i, 1).Value = ws2.Cells(i, 1).Value Then
matchFound = True
Exit For
End If
Next i
If matchFound Then
MsgBox "Matching data found!", vbInformation
Else
MsgBox "No matching data found.", vbInformation
End If
End Sub
10. 日付フォーマットの一括変換
説明
指定範囲内の日付データを特定のフォーマットに一括変換するスクリプトです。
使用例
例えば、異なる日付フォーマットのデータを統一する場合に使用します。ソートの前に実行することで日付フォーマットがバラバラなデータをソートできるようになります。
コード
Sub ConvertDateFormat()
Dim ws As Worksheet
Dim dateRange As Range
Dim cell As Range
' シートと範囲を指定
Set ws = ThisWorkbook.Sheets("DateData")
Set dateRange = ws.Range("A1:A100")
' 日付フォーマットを変換
For Each cell In dateRange
If IsDate(cell.Value) Then
cell.Value = Format(cell.Value, "yyyy-mm-dd")
End If
Next cell
MsgBox "Date format converted successfully!", vbInformation
End Sub
ここから先は
¥ 2,500
この記事が気に入ったらチップで応援してみませんか?