VBA内でExcelワークシート関数が使えるWorksheetFunctionの解説

  Рет қаралды 21,438

マクロちゃんねる

マクロちゃんねる

Күн бұрын

Excelワークシート関数をVBAコード内で使うにはWorksheetFunctionを使います。マクロが簡単に作れるのでかなり重宝します。
0:00 はじめに
0:18 Formulaとの違い
1:04 WorksheetFunctionの使い方
4:23 エラーに注意
6:37 サンプルマクロ
ワークシート関数について学びたい方は「PC活用ちゃんねる」がおすすめです
/ @pckatuyou
VBAプログラミング基礎講座の再生リスト
• VBAプログラミング基礎講座

Пікірлер: 13
@adjun6631
@adjun6631 3 жыл бұрын
マクロちゃんねる様。いつも勉強させていただいきありがとうございます。"工事"シートのA列に工事名、B列に日数を入れています。 工程表に工事名を入れたら、その下にその日数分のセルの背景色を塗るVBAをVLookupを使って作りましたが、ダメでした😓 Sub baa() Dim r As Range, v , n as Long set r =Range("D4:T19")'←工程表 For Each v In r If v . value〈〉" " then v. offset(1 , n). interior .color= RGB(255,0,0) end if next v end sub  ' offsetの()内のnについて、 set n . value=worksheetfunction . vlookup(v , worksheets("工事").range("A1:B10"), 2 , False)としてみたのですがエラーが出ます😓 お助けください!
@macro-chan
@macro-chan 3 жыл бұрын
set n.value=worksheetfunction.vlookup(v,worksheets("工事").range("A1:B10"), 2,False) これは文法的に誤りです。 nに代入したいのはLong型ですのでsetとvalueが不要ですね。 あとは、シートの構成がいまいちわからないのでなんとも言えないのですが、もしわからなかったらまた質問してください。
@adjun6631
@adjun6631 3 жыл бұрын
@@macro-chan ご返信ありがとうございます。 n=worksheetfunction.vlookup(v,worksheets("工事").range("A1:B10"), 2,False) を挿入すると、「実行時エラー1004 WorksheetFunctionクラスのVlookupプロパティを取得できません」となりました 💦 シートの構成がうまくお伝えできないのがもどかしいです(*_*) とりあえず、実行してくれればよいのですが( ;∀;)
@adjun6631
@adjun6631 3 жыл бұрын
(動画を何度か見返して)on error resume nextを入れたら実行できました😆。前にもコメントでon error resume next のアドバイスいただいていました😅結構使えますね。ありがとうございました😆
@user-eo3hj3cx3f
@user-eo3hj3cx3f 3 жыл бұрын
勉強させていただいてます。ちょっと質問なんですがvlookup 関数の参照範囲は絶対参照じゃなくて問題ないのですか?
@macro-chan
@macro-chan 3 жыл бұрын
ご視聴ありがとうございます。 相対参照や絶対参照を気にするのはセルに数式を入れた場合です。 WorksheetFunction.VLookupではセルに数式を入れたのではなく計算結果を入れているので気にする必要はないです。
@user-li6yg8vh1r
@user-li6yg8vh1r 3 жыл бұрын
@@macro-chan 😲なるほど!!💡ってことは、そもそもVBAで絶対参照にする事はないんですよね??
@macro-chan
@macro-chan 3 жыл бұрын
動画冒頭でVLOOKUP関数をセル範囲に入れていますよね。こういった「数式」をセル範囲に代入するVBAの場合は普通にVBAを使わずにワークシートに数式を入れる場合と同じルールになるので何もしないとセル参照は相対的にずれていきます。なので絶対参照を使います。 だけど、WorksheetFunctionではループ処理を使いセル1つ1つに計算の「結果」を代入しています。ですのでシート上ではどこもセル参照していません。相対的に参照元がずれるという概念がそもそもないというわけです。
@user-li6yg8vh1r
@user-li6yg8vh1r 3 жыл бұрын
@@macro-chan ありがとうございました💦Formulaプロパティの動画見させていただきました💦
@Kazuki_88888
@Kazuki_88888 2 жыл бұрын
何時も参考にさせていただき、勉強をすすめております。 現在WorksheetFunctionを使用してCountif使用して、いくつ都道府県別のデータがあるかを転記する練習をしております。 エクセル関数だと、集計表のB2セルに=COUNTIF(都道府県!C:C,集計表!A2)と書けば(オートフィルで47都道府県分を計算するとして)正常に表示がされますが、VBAで下記の関数を書いてみましたが、うまく数値が出ませんでした。 Dim ws As Worksheet Dim hyo As Worksheet Dim i As Long Set ws = ThisWorkbook.Worksheets("都道府県") Set hyo = ThisWorkbook.Worksheets("集計表") '最終行までループする For i = 2 To ws.Cells(Rows.Count, "A").End(xlUp).Row With hyo.Cells(i, "B").Value = WorksheetFunction.CountIf(ws.Range("C:C"), hyo.Cells(i, "A")) End With Next i ws.Activate End sub もしかして別のシートでやる場合は、For Nextで回すことがそもそもできなかったりするのでしょうか。図々しいですが、アドバイスなどいただけますと幸甚です。
@macro-chan
@macro-chan 2 жыл бұрын
コード書いていただくととても回答しやすくて助かります。 ループの部分がいくつか間違っているようですね。 '最終行までループする For i = 2 To hyo.Cells(Rows.Count, "A").End(xlUp).Row hyo.Cells(i, "B").Value = WorksheetFunction.CountIf(ws.Range("C:C"), hyo.Cells(i, "A")) Next i
@Kazuki_88888
@Kazuki_88888 2 жыл бұрын
@@macro-chan ありがとうございます! いただいたコードを打ち直したところ、きちんとCOUNTIFが生きてくれました。そもそも表の方のカウントしたい都道県を指定していなかったからなんですね。また、余計なWithステートメントも必要ないのが理解できました。 本当に助かりました!これからも学習させていただきます。
@user-ln9zg8fp4z
@user-ln9zg8fp4z 3 жыл бұрын
自分学習用 COUNTIF関数:引数[範囲]に指定したセル範囲で[検索条件]に一致するデータの数を求めます。 =COUNTIF(範囲, 検索条件)  if worksheetfunction.countif(range("A:A"),s)=0 then←A列にinputboxの戻り値が0ならば最終行の1行下にSを代入する。 else以下0でなければ”すでに存在します”とメッセージを出す。
VBAこれでもう怖くない!セル範囲指定が自由自在!
12:15
マクロちゃんねる
Рет қаралды 39 М.
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 29 МЛН
孩子多的烦恼?#火影忍者 #家庭 #佐助
00:31
火影忍者一家
Рет қаралды 52 МЛН
Now THIS is entertainment! 🤣
00:59
America's Got Talent
Рет қаралды 36 МЛН
Incredible magic 🤯✨
00:53
America's Got Talent
Рет қаралды 81 МЛН
VBAのエラー処理|On Error Resume Nextなど
13:31
マクロちゃんねる
Рет қаралды 19 М.
計算と変数は超基本だよ【VBAプログラミング基礎講座#5】
19:00
よく使うVBA関数25選!【VBAプログラミング基礎講座#14】
14:16
ExcelVBAはコピーと貼り付けを使いこなしてやっと脱初心者です
10:38
8 Excel tools everyone should be able to use
18:31
Билял Хасенов – Excel, VBA & More
Рет қаралды 2,3 МЛН
マクロVBAでExcelシートを自在に操作できるようになろう!
18:12
マクロちゃんねる
Рет қаралды 40 М.
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 29 МЛН