見出し画像

【エクセル時短術】実務で使えるExcel VBA チートシート100選!📚

あなたの仕事を
今日から"100倍"早くする

そんなExcel仕事術を
"100個"お伝えしていきます。

このチートシートの内容を仕事に取り込めば、

・コーヒーを一杯飲むよりも短い時間で、毎日の報告資料が完成する
・定時に退社して、家族や趣味に使える時間を増やせる
・「素早く、正確に」仕事をこなせる人材として、社内評価が上がる

こんな状態を実現させることができます。

最終的には、
市場価値の高い人材として転職市場で引っ張りだこ。転職で年収アップ。

そんな状態になることも夢ではありません。

逆に、このExcelチートシートを知らないと

・仕事でミスしてばかり
・ルーティンワークに追われる毎日
・残業ばかりで家族との時間や趣味の時間が取れずにプライベートもギクシャク

こんな悲惨なことになってしまいます。

そんなことにならないよう、ぜひExcel作業を1分で終わらせるためのエクセルVBA 100個のチートシートを手に入れてください。

業務効率化のため半年の月日をかけて作成した5万文字越えの100個のチートシートのため、全編有料級の有益情報ですが、特別に冒頭部分を公開します。

一つ一つ具体的に解説していきますね。

注意事項・免責事項

チートシートにはセルの仮の値が入っています。コピペしたら、サンプルの値を本番の値と入れ替えてください。

新しいコードを使う際は、Excelの本番ファイルのコピーを作成して動作確認することを推奨します。

このチートシートを使用することで発生したいかなる損害についても、当方は責任を負いません。必ず自己責任のもと使用してください。

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

💡Tips
特定の数字に満たないセルを全て削除したい場合、特定の日付以前のデータを削除したい場合など、データ量が多く手作業でやるのが大変な場合に絶大な効果を発揮します

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

💡Tips
例えば、「1. シートの自動生成とデータ入力」と組み合わせることで、月次報告書の作成からメールの送信までのフローを全て自動化することもできます。メールの文面をテンプレ化することで、考える手間や確認の時間を減らして大幅な時間短縮が可能です。

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

💡Tips
データ量が多い場合、重複ミスを自力でチェックするのは非現実的です。VBAで自動化することで、精度と効率を大幅に高めることができます。

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

💡Tips
デザインは微調整する必要がありますが、数字を正確に反映したグラフの下地を自動作成することができ、資料作成の時間を大幅に短縮できます。


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

💡Tips
ファイルリスト作成を自動化することで、抜け漏れの可能性を大幅に減らすことができます。

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


💡Tips
顧客アンケートの集計など、日付の書き方が人によってバラバラなデータを扱う際に便利です。「8. データのソート」と組み合わせることで、日付フォーマットを統一した上で日付順に並べることができます。

ここから先は

44,817字

¥ 2,500

この記事が気に入ったらチップで応援してみませんか?