Excel VBA | Offset × Resize × ForEach の 黄金 100 パターン集

VBA
スポンサーリンク

VBA ユーザー定義関数(UDF)化テンプレート集

「黄金100パターン」を セル関数として直接呼び出せる形 にする方法です。
これで、シート上で =関数名(...) と入力すれば即座に結果が返るようになります。


基本構造

' ===== Module: UDFUtils =====
Option Explicit

' 数値を税込に変換する UDF
Public Function AddTax(price As Double, Optional taxRate As Double = 0.1) As Double
    AddTax = price * (1 + taxRate)
End Function

' 日付から「年」を返す UDF
Public Function GetYear(d As Date) As Integer
    GetYear = Year(d)
End Function

' 日付から「月」を返す UDF
Public Function GetMonth(d As Date) As Integer
    GetMonth = Month(d)
End Function

' 日付から「日」を返す UDF
Public Function GetDay(d As Date) As Integer
    GetDay = Day(d)
End Function
VB

👉 Excel セルで直接

  • =AddTax(1000) → 1100
  • =GetYear(A2) → 2025
  • =GetMonth(A2) → 11
  • =GetDay(A2) → 28

売上表用 UDF

' 売上表:税込金額
Public Function SalesTax(price As Double) As Double
    SalesTax = price * 1.1
End Function

' 売上表:差分計算
Public Function SalesDiff(currVal As Double, prevVal As Double) As Double
    SalesDiff = currVal - prevVal
End Function
VB

👉 セルで

  • =SalesTax(B2) → 税込金額
  • =SalesDiff(C3,C2) → 前回との差分

勤怠表用 UDF

' 勤怠表:遅刻判定
Public Function IsLate(startTime As Date) As Boolean
    IsLate = (Hour(startTime) >= 9 And Minute(startTime) > 0)
End Function

' 勤怠表:勤務時間計算
Public Function WorkHours(startTime As Date, endTime As Date) As Double
    WorkHours = (endTime - startTime) * 24
End Function
VB

👉 セルで

  • =IsLate(B2) → TRUE/FALSE
  • =WorkHours(C2,D2) → 勤務時間(時間数)

在庫表用 UDF

' 在庫表:カテゴリ分類
Public Function StockCategory(itemName As String) As String
    Select Case itemName
        Case "りんご", "みかん", "バナナ"
            StockCategory = "果物"
        Case "牛乳", "チーズ"
            StockCategory = "乳製品"
        Case Else
            StockCategory = "その他"
    End Select
End Function

' 在庫表:異常値判定
Public Function IsNegativeStock(stockVal As Double) As Boolean
    IsNegativeStock = (stockVal < 0)
End Function
VB

👉 セルで

  • =StockCategory(A2) → 果物 / 乳製品 / その他
  • =IsNegativeStock(B2) → TRUE/FALSE

✅ まとめ

  • UDF化Public Function 関数名(...) As 型 で定義
  • セル関数として利用可能=関数名(引数)
  • 業務別ライブラリ化 → 売上表・勤怠表・在庫表に特化した関数を追加
  • 共通関数 → 日付分解・差分計算・判定処理などを汎用化

💡 これで「黄金100パターン」を セル関数として直接呼び出せる UDFライブラリ に変換できました。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました