Top> VBA実践塾紹介

VBA通信教材申込み

VBA課題解決型実践塾セミナー内容

申込 ヤフーショッピング

エクセル関数を使う

エクセル関数を使う

エクセル関数を使うことはエクセルの機能を最大限に発揮することです。
エクセル関数をどんどん使っていきましょう。
但しVBA実践塾の基本IFとForですべて可能だという原則をマスターしてから使えば
鬼に金棒です。
Application.WorksheetFunction.エクセル関数(引数)

VBA実践塾の特徴

Application.WorksheetFunctionを使わずに直接式を代入する場合

式が間違って消去されてもVBAに書かれているため再度式を入力する必要がありません。
現実的にはエクセルのように直接範囲を変更できないし、ボタンを押さないと実行できないため意味がないと思います。
Sub sum計算式直接入力範囲固定()
  Cells(2, 4) = "=Sum(B2:B8)"
End Sub
数字の文字列を作る場合は変数をつなぐだけです。B" & lastrow
Sub sum計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 4) = "=Sum(B2:B" & lastrow & ")"
End Sub

SUM関数をApplication.WorksheetFunctionを使った例です。

範囲にRangeを使っています。

Sub sum計算式値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.Sum(Range("B2:B8"))
  Cells(2, 4) = kotae
End Sub
Sub sum計算式値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.Sum(Range("B2:B" & lastrow))
  Cells(2, 4) = kotae
End Sub

VBA実践塾の特徴

SUMIF関数は範囲・検索条件・合計範囲の引数を渡します。

検索条件の文字列“の使い方に注意してください。
そこの文字列の作り方が面倒です。
Sub sumif検索c計算式直接入力範囲固定()
  Cells(2, 4) = "=SUMIF(A2:B8," & """c""" & ",B2:B8)"
End Sub
Sub sumif検索c計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 4) = "=SUMIF(A2:B" & lastrow & "," & """c""" & ",B2:B" & lastrow & ")"
End Sub
Sub sumif検索c計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.sumif(Range("A2:B8"), "c", Range("B2:B8"))
  Cells(2, 4) = kotae
End Sub
Sub sumif検索c計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.sumif(Range("A2:B" & lastrow), "c", Ran
ge("B2:B" & lastrow))
  Cells(2, 4) = kotae
End Sub
Sub sumif検索計算式直接入力範囲固定()
  Cells(2, 4) = "=SUMIF(A2:B8,D5,B2:B8)"
End Sub
Sub sumif検索計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 4) = "=SUMIF(A2:B" & lastrow & ",D5,B2:B" & lastrow & ")"
End Sub
Sub sumif検索計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.sumif(Range("A2:B8"), Range("D5"), Range("B2:B8"))
  Cells(2, 4) = kotae
End Sub
Sub sumif検索計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.sumif(Range("A2:B" & lastrow), Range("D5"), Range("B2:B" & lastrow))
  Cells(2, 4) = kotae
End Sub

VBA実践塾の特徴

DSUM(データベース、フィールド、検索条件)はエクセルシートをデータベースとして フィールドを指定して検索条件を入れる便利な関数です。

Sub DSUM計算式直接入力範囲固定()
  Cells(2, 2) = "=DSum(A6:B13,B6,A1:A2)"
End Sub
Sub DSUM計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 2) = "=DSUM(A6:B" & lastrow & ",B6,A1:A2)"
End Sub
Sub DSUM計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.DSum(Range("A6:B13"), Range("B6"), Range("A1:A2"))
  Cells(2, 2) = kotae
End Sub
Sub DSUM計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.DSum(Range("A6:B" & lastrow), Range("B6"), Range("A1:A2"))
  Cells(2, 2) = kotae
End Sub
Sub inputboxを使ったDSUM()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  Dim 区分 As String
  区分 = InputBox("区分を入力してください")
  Cells(2, 1) = 区分
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.DSum(Range("A6:B" & lastrow), Range("B6"), Range("A1:A2"))
  Cells(2, 2) = kotae
End Sub

VBA実践塾の特徴

SUMIFS関数はDSUM関数のように2つ以上の検索条件を使うことができます。

Sub sumifs検索値計算式直接入力範囲固定()
  Cells(2, 5) = "=SUMIFS(C1:C8,A1:A8," & """a""" & ",B1:B8," & """大阪""" & ")"
End Sub
Sub sumifs検索値計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 5) = "=SUMIFS(C1:C" & lastrow & ",A1:A" & lastrow & "," & """a""" & ",B1:B" & lastrow & "," & """大阪""" & ")"
End Sub
Sub sumifs検索値計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.SumIfs(Range("C1:C8"), Range("A1:A8"), "a", Range("B1:B8"), "大阪")
  Cells(2, 5) = kotae
End Sub
Sub sumifs検索値計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.SumIfs(Range("C1:C" & lastrow), Range("A1:A" & lastrow), "a", Range("B1:B" & lastrow), "大阪")
  Cells(2, 5) = kotae
End Sub
Sub sumifs検索計算式直接入力範囲固定()
  Cells(2, 5) = "=SUMIFS(C1:C8,A1:A8,E5,B1:B8,F5)"
End Sub
Sub sumifs検索計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 5) = "=SUMIFS(C1:C" & lastrow & ",A1:A" & lastrow & ",E5,B1:B" & lastrow & ",F5)"
End Sub
Sub sumifs検索計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.SumIfs(Range("C1:C8"), Range("A1:A8"), Range("E5"), Range("B1:B8"), Range("F5"))
  Cells(2, 5) = kotae
End Sub
Sub sumifs検索計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.SumIfs(Range("C1:C" & lastrow), Range("A1:A" & lastrow), Range("E5"), Range("B1:B" & lastrow), Range("F5"))
  Cells(2, 5) = kotae
End Sub

VBA実践塾の特徴

2つ以上の検索条件のあるDSUM関数を使ってみましょう。

ここまで練習すれば文字と数字の結合にもなれてくると思います。
使っていないと忘れますので、自分の部品集として必要なところを使ってください。
Sub DSUM検索2件計算式直接入力範囲固定()
  Cells(2, 5) = "=DSUM(A1:C8,C1,E4:F5)"
End Sub
Sub DSUM検索2件計算式直接入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  Cells(2, 5) = "=DSUM(A1:C" & lastrow & ",C1,E4:F5)"
End Sub
Sub DSUM検索2件計算値入力範囲固定()
  Dim kotae As Long
  kotae = Application.WorksheetFunction.DSum(Range("A1:C8"), Range("C1"), Range("E4:F5"))
  Cells(2, 5) = kotae
End Sub
Sub DSUM検索2件計算値入力範囲取得()
  Dim i As Long
  Dim lastrow As Long
   Dim kotae As Long
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  kotae = Application.WorksheetFunction.DSum(Range("A1:C9" & lastrow), Range("C1"), Range("E4:F5"))
  Cells(2, 5) = kotae
End Sub

金利計算PMT関数を使う

VBA実践塾の特徴

金利計算に使うPMT(利率,期間,現在価値,将来価値,支払期日)関数を
Application.WorksheetFunctionを使って使います。
Private Sub cmdJikkou_Click()
  Dim kingaku As Double
  kingaku = Application.WorksheetFunction.Pmt(Val(txtRisoku.Text) / 1200, Val(txtKikan.Text) * 12, Val(txtKingaku.Text), 0)
  txtHensai.Text = kingaku * -1
  txtHensai.Text = Format(txtHensai.Text, "#,##0")
  txtKingaku.Text = Format(txtKingaku.Text, "#,##0")
End Sub

先頭へ

 

 

塾長あいさつ
基本方針(考え方)
通信教育内容
課題解決セミナー内容
初心者基礎コース内容
カリキュラム・料金
案内地図・各種リンク
問合せ・申込み
アベノ塾
システムの内製化
アサイコンピュータACS
応用部品集(有料)
販売管理(事例)
財務管理(事例)
顧客管理(事例)
見積もり(事例)
給与(事例)
介護(事例)
ゴースト暗算(事例)
部品集(部品の基礎)
部品集(シート関連)
部品集(データベース)
部品集(セル関連)
部品集(関数)
部品集(フォーム関連)
部品集(ブック関連)
部品集(その他)
変数の勉強
繰り返しと条件文
マスター登録.訂正.削除
フォルダー内のファイル
項目をシート名で作成
ブックの操作
CSVファイルの取り込み
呼び出し元・先
商品マスター検索
エクセル関数をVBAで
エクセル関数を使う
よくつかうプログラム
販売管理(ソース)
財務管理(ソース)
給与管理(概要・画面)
見積もり(概要・画面)
工程管理(概要・画面)
原価管理(概要・画面)