Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11 / 13164 ツリー ←次へ | 前へ→

【80061】FormulaプロパティでVlookup関数とMatch関数の組合せを入力したい 初心者ママ 18/7/18(水) 2:06 質問[未読]
【80062】Re:FormulaプロパティでVlookup関数とMatc... γ 18/7/18(水) 6:46 発言[未読]
【80063】Re:FormulaプロパティでVlookup関数とMatc... 初心者ママ 18/7/19(木) 0:07 発言[未読]
【80064】Re:FormulaプロパティでVlookup関数とMatc... γ 18/7/19(木) 6:56 発言[未読]
【80066】Re:FormulaプロパティでVlookup関数とMatc... 初心者ママ 18/7/20(金) 0:04 発言[未読]
【80067】Re:FormulaプロパティでVlookup関数とMatc... γ 18/7/20(金) 7:37 発言[未読]
【80071】Re:FormulaプロパティでVlookup関数とMatc... γ 18/7/20(金) 21:04 発言[未読]
【80077】Re:FormulaプロパティでVlookup関数とMatc... 初心者ママ 18/7/23(月) 19:52 お礼[未読]
【80065】Re:FormulaプロパティでVlookup関数とMatc... 基本方針 18/7/19(木) 7:12 発言[未読]

【80061】FormulaプロパティでVlookup関数とMatch...
質問  初心者ママ  - 18/7/18(水) 2:06 -

引用なし
パスワード
   Formulaプロパティで列番号はMatch関数で参照するVlookup関数を入力したいのですが、Match関数に変数を入れているためか上手く作動しません(コンパイルエラーが出る)
修正すべき箇所ご指導お願いできませんか…?
【前提】
2シート目の1行目:Vlookupの列番号の参照値がある
2シート目の4行目:Vlookupを入力する
ピボットシートの2行目:列番号の検索範囲がある
※ただしvba実行時ピボットテーブルにはデータがまだない状態で、列番号をMatch関数で導く事ができるのはformula関数の処理が終わった後

Dim X as long
Dim i As Long
Dim k As Long
Dim d As String
Dim pd As Range
Dim arr As Range

X = 100

For i = 1 To X
  k = Worksheets(1).Range("A1").Value + i
  d = Worksheets(2).Cells(1, k).Value
  Set pd = Worksheets("ピボット").Range("2:2")
  Set arr = Worksheets("ピボット").Range("A4").CurrentRegion.Offset(1, 0)

 Worksheets(2).Cells(4, k).Formula = "=IFERROR(VLookUp(C2, " & arr.Address(External:=True) & "," & Match(d, pd, 0)", False), 0)"
Next i

よろしくお願いしますm(__)m

【80062】Re:FormulaプロパティでVlookup関数とMa...
発言  γ  - 18/7/18(水) 6:46 -

引用なし
パスワード
   試してみてはいませんが、
最後のところ
& Match(d, pd, 0)", False), 0)"

& Application.Match(d, pd, 0) & ", False), 0)"
などとすると良いかもしれません。

・& が漏れていること
・ワークシート関数MatchをVBAで使うには、
 WorksheetFunctionかApplicationをつけることが必要。
 (なお、Matchしなかったときの反応が両者は違います。
  前者はエラーが発生してとまります。
  後者は止まりませんが、エラー値を返します。)

【80063】Re:FormulaプロパティでVlookup関数とMa...
発言  初心者ママ  - 18/7/19(木) 0:07 -

引用なし
パスワード
   γ さん

さっそくアドバイス頂きありがとうございます!!
ご指摘いただいた2か所修正した結果、無事動作しました。

が、(重ねての質問となり恐縮なのですが)Match関数の部分を値を返すのではなく、関数をそのまま残す方法はないでしょうか?

イメージとしてはマクロ処理結果、セルに
=Iferror(vlookup(検索値、検索範囲、Match(Worksheets(2).Cells(1, k),Worksheets(3).Range("2:2"),0),false),0)
※Kの変数は値を返す

と入って欲しいのですが、Match関数でやろうとすると無理がありますでしょうか。。
別の関数(Countif等でしょうか…)で記載する方法があればアドバイスいただけますと大変助かります。

よろしくお願いします。

【80064】Re:FormulaプロパティでVlookup関数とMa...
発言  γ  - 18/7/19(木) 6:56 -

引用なし
パスワード
   マクロの文法による式をセルに入れても
嬉しくないでしょう。
Rangeだとか言わずに、まずはワークシート上で
動作する式を確定するのが先決です。
(少なくとも)2箇所に質問してもあまり益がない筈。
回答は付きます。
どちらかに絞る方がよいです。

【80065】Re:FormulaプロパティでVlookup関数とMa...
発言  基本方針  - 18/7/19(木) 7:12 -

引用なし
パスワード
   このサイトの基本方針から

マルチポストについて
別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。

また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

【80066】Re:FormulaプロパティでVlookup関数とMa...
発言  初心者ママ  - 18/7/20(金) 0:04 -

引用なし
パスワード
   ▼γ さん:
ご返信ありがとうございます。
質問の作法をよく知らず失礼をして申し訳ありませんでした…
ワークシート上に下記関数を複数セルに直接書き込み用意する手間を省く方法はないかというのがそもそものゴールだったのですが、入り口がまず間違えていたのかもしれません…

C2に入力する関数
=IFERROR(VLOOKUP($A1,sheet2!$A2:$1048576,MATCH(sheet1!D$1(※),sheet2!$2:$2,0),FALSE),0)
※この関数をC2から指定の列数だけ右にコピーしていいき、右に1列ずれるごとにMATCH関数の検索値のセルがD1からE1、F1と一緒にずれる

【80067】Re:FormulaプロパティでVlookup関数とMa...
発言  γ  - 18/7/20(金) 7:37 -

引用なし
パスワード
   D$1の所以外は変わらない固定の文字列なわけですね。
それなら、D$1を変数dから変換してから、
その固定文字列と & を使って連結すればよいわけです。

肝心のD$1部分は、
変数dから
d.Address(True, False)
とすればよいでしょう。
意味は VBAのヘルプでAddressプロパティを確認して下さい。
トライしてみて下さい。

【80071】Re:FormulaプロパティでVlookup関数とMa...
発言  γ  - 18/7/20(金) 21:04 -

引用なし
パスワード
   >変数dから
>d.Address(True, False)
>とすればよいでしょう。
Worksheets(2).Cells(1, k).Address(True, False)
でしたかね。
どうも失礼しました。

【80077】Re:FormulaプロパティでVlookup関数とMa...
お礼  初心者ママ  - 18/7/23(月) 19:52 -

引用なし
パスワード
   ▼γ さん:
お礼が遅くなり申し訳ありません。
アドバイス頂いた内容で修正、処理したところ希望通りの結果が出るようになりました!!
助かりました…
拙い質問文にも関わらず丁寧にご教示頂きありがとうございましたm(__)m

引き続き精進したいと思います。

11 / 13164 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free