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

  Рет қаралды 23,469

マクロちゃんねる

マクロちゃんねる

Күн бұрын

Пікірлер: 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 のアドバイスいただいていました😅結構使えますね。ありがとうございました😆
@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ステートメントも必要ないのが理解できました。 本当に助かりました!これからも学習させていただきます。
@コメ-o9l
@コメ-o9l 3 жыл бұрын
勉強させていただいてます。ちょっと質問なんですがvlookup 関数の参照範囲は絶対参照じゃなくて問題ないのですか?
@macro-chan
@macro-chan 3 жыл бұрын
ご視聴ありがとうございます。 相対参照や絶対参照を気にするのはセルに数式を入れた場合です。 WorksheetFunction.VLookupではセルに数式を入れたのではなく計算結果を入れているので気にする必要はないです。
@公武
@公武 3 жыл бұрын
@@macro-chan 😲なるほど!!💡ってことは、そもそもVBAで絶対参照にする事はないんですよね??
@macro-chan
@macro-chan 3 жыл бұрын
動画冒頭でVLOOKUP関数をセル範囲に入れていますよね。こういった「数式」をセル範囲に代入するVBAの場合は普通にVBAを使わずにワークシートに数式を入れる場合と同じルールになるので何もしないとセル参照は相対的にずれていきます。なので絶対参照を使います。 だけど、WorksheetFunctionではループ処理を使いセル1つ1つに計算の「結果」を代入しています。ですのでシート上ではどこもセル参照していません。相対的に参照元がずれるという概念がそもそもないというわけです。
@公武
@公武 3 жыл бұрын
@@macro-chan ありがとうございました💦Formulaプロパティの動画見させていただきました💦
@ミニチュアダックス犬りくのりくさんぽチ
@ミニチュアダックス犬りくのりくさんぽチ 3 жыл бұрын
自分学習用 COUNTIF関数:引数[範囲]に指定したセル範囲で[検索条件]に一致するデータの数を求めます。 =COUNTIF(範囲, 検索条件)  if worksheetfunction.countif(range("A:A"),s)=0 then←A列にinputboxの戻り値が0ならば最終行の1行下にSを代入する。 else以下0でなければ”すでに存在します”とメッセージを出す。
よく使うVBA関数25選!【VBAプログラミング基礎講座#14】
14:16
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 55 МЛН
路飞做的坏事被拆穿了 #路飞#海贼王
00:41
路飞与唐舞桐
Рет қаралды 26 МЛН
Интересно, какой он был в молодости
01:00
БЕЗУМНЫЙ СПОРТ
Рет қаралды 3,8 МЛН
VBAによるプログラミング基礎文法入門<はじめてでも大丈夫>
19:19
Formulaプロパティの使い方を丁寧に説明![ExcelVBA]
9:24
マクロちゃんねる
Рет қаралды 23 М.
Selenium不要!Excel VBAでRPAソフトを作ろう(準備編①)
8:31
Mrs.Pの好奇心ラボ
Рет қаралды 9 М.
ExcelVBA配列の基礎|作り方と使い方を覚えよう
20:29
マクロちゃんねる
Рет қаралды 87 М.
【Excel】VLOOKUPで複数該当データ抽出方法!(INDEX+MATCHも)
11:45
PC活用ちゃんねる
Рет қаралды 261 М.
VBAのエラー処理|On Error Resume Nextなど
13:31
マクロちゃんねる
Рет қаралды 20 М.
【完全解説】Pythonを使った自動化例46選【業務効率化できること】
34:58
はやたす | Python・データサイエンスコーチ
Рет қаралды 229 М.
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 55 МЛН