advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 7935 for VLOOKUP (0.002 sec.)
[[20090224132736]]
#score: 3345
@digest: 3b999b92807882b697dd64ff1423db3e
@id: 42203
@mdate: 2009-02-24T08:44:40Z
@size: 8855
@type: text/plain
#keywords: errmsg (20972), 力行 (10394), 分必 (7389), △△△ (6174), 囲= (6152), 囲as (5523), ジイ (5406), 行, (5333), ェン (3571), イロ (3270), 囲, (3091), vlookup (2589), 再計 (1949), 範囲 (1790), cells (1714), イベ (1545), トモ (1445), worksheetfunction (1430), ンジ (1354), target (1300), ベン (1265), シー (1255), worksheets (1199), ート (998), 必要 (971), コー (949), モジ (948), 発生 (923), エラ (920), ジュ (906), 応用 (881), 、vl (869)
『シート名を指定しないでマクロでVlookupをつかうには』(よ〜たん)
よろしくお願いします。 現在、特定のシートでのみVlookupをつかうコードを組んでいます。 それをシートが10〜15程度あるものにも使えるよう応用しようと頑張っていましたが、どんどんわからなくなってきました。 Dim 範囲 As Range Set 範囲 = Worksheets("○○○").Range("B3:E100") Dim ws As Worksheet Set ws = Worksheets("△△△") On Error GoTo errMSG 現在は、この Worksheets("△△△") のところに特定のシート名をいれていますが、応用したいブックのシート名は、毎回変わり、シート数も決まっていません。 どのようにすればいいのでしょうか? よろしくお願い致します。 ---- どこにVLOOKUPが絡んでくるのですか? 「こんな事がしたいのか〜」 と、分かるようなコードを載せるのが良いと思いますよ。 変数ws は、VLOOKUP結果を入れるシートなんですかね・・・? (HANA) ---- すいません。 現在使っているものです。 イベント利用のため、NEXTは必要ないのだと思いますが、勉強のために作成しました。 そのまま利用していたので、ごちゃごちゃしているかもしれません。 >変数ws は、VLOOKUP結果を入れるシートなんですかね・・・? という風に理解しています。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 12 Or Target.Row > 19 Then Exit Sub If Target.Column <> 21 Then Exit Sub 'H列27〜36行目のみチェンジイベント発生 Dim 範囲 As Range Set 範囲 = Worksheets("○○○").Range("B3:E60") 'コードが見やすいよう範囲を設定。 Dim ws As Worksheet Set ws = Worksheets("△△△") 'コードが見やすいようシートを設定。 On Error GoTo errMSG For i = 13 To 19 Step 2 'For・・・Nextで回数を指定して繰り返す。 x = Application.WorksheetFunction.VLookup(ws.Cells(i, "U"), 範囲, 2, False) 'ワークシート関数の y = Application.WorksheetFunction.VLookup(ws.Cells(i, "U"), 範囲, 3, False) 'vlookupを使う z = Application.WorksheetFunction.VLookup(ws.Cells(i, "U"), 範囲, 4, False) Cells(i, "V") = x 'Cellsを使ってセルを参照する Cells(i, "W") = y Cells(i, "X") = z Next i errMSG: Cells(i, "I") = "" 'エラーがでたら・・・ Cells(i, "L") = "" '(H列が空白だったり、3コードが検索できなかったりしたら) Cells(i, "N") = "" 'I.L・N列は空白になるように End Sub 以上です。 上記のコードと検索範囲などは違いますが、複数あるシートも書式は全て同じになっているので、 どのシートにでも使えるようにできたらいいなと思いました。 よろしくお願い致します。 (よ〜たん) ---- それでしたら、コード内の ws. を消してしまえば良いのではないですかね。 このコードは、各シートのシートモジュールに入れて有るのですよね。 シート名を指定しない場合は、アクティブなシートのセルを参照しますので 「自分のシート」と言う事になると思います。 ws.Cells(i, "U") のセルと Cells(i, "V") のセルは、同じシートのセルですよね? それと、これだとエラーにならなくても I,L,N列に「""」が入ると思いますが 未だ作成途中ですかね? それとも、ループの最後で必ずエラーになって終了なのかな? (HANA) ---- HANAさん、よろしくお願いします。 errMSG: Cells(i, "V") = "" Cells(i, "X") = "" Cells(i, "X") = "" の間違いでした。 ws.を消せば…というご指摘でしたので、試してみましたが、エラーにはならないのですが、VLOOKUPが反応しませんでした。 チェンジイベントのままだからでしょうか? 不特定のシートに使えるようにということは、チェンジイベントではダメということですよね? 質問ばかりで申し訳ないのですが、もうしばらくお付き合いいただけると助かります。 (よ〜たん) ---- えっと・・・・ >・・・の間違いでした。 と言うことではなくてですね。。。 取り敢えず 「どう動けばよいのか?」 とお伺いした方が良いのですかね。 上のコードでしたら「△△△」のシートモジュールに貼り付けてあるのですよね? 例えば U12セルに入力が有ったら V13,W13,X13 に結果が返されれば良いのですか? >NEXTは必要ないのだと思いますが と言う事なので、範囲の該当の結果を書き換える必要は無いのですよね? それから >上記のコードと検索範囲などは違いますが ってのは「△△△」以外のシートの場合、 >Set 範囲 = Worksheets("○○○").Range("B3:E60") の範囲が違う って事ですかね? 因みに、この掲示板は 文頭に半角スペースを入れると 空行を入れなくても改行がそのまま表示出来ますよ。 _←ここに半角スペースです。 (HANA) ---- 説明が下手ですいませんでした。 >上のコードでしたら「△△△」のシートモジュールに貼り付けてあるのですよね? はい。そうです。 >V13,W13,X13 に結果が返されれば良いのですか? はい。別シートにある表から結果をひっぱってきたいと思います。 >NEXTは必要ないのだと思いますが >と言う事なので、範囲の該当の結果を書き換える必要は無いのですよね? 多分必要になるのでは…。と思います。 例に出していたコードは応用前の勉強用のものですので、今からつくりたいモノと範囲が違います。 もっと欲を出していうと、IF文をからませて、Y列が空白でなければVLOOKUP、空白ならば空白のま ま…。 というふうにして、LOOPさせたいと思っています。 >ってのは「△△△」以外のシートの場合、 >Set 範囲 = Worksheets("○○○").Range("B3:E60") >の範囲が違う って事ですかね? はい。その通りです。わかりにくくてすいません。 よろしくお願い致します。 ---- もう少し確認させて下さい。 今気づいたのですが >If Target.Row = 12 Or Target.Row > 19 Then Exit Sub これでは範囲の指定がおかしくないですか? >'H列27〜36行目のみチェンジイベント発生 このコメントも、正しくないですよね。。。 >今からつくりたいモノと範囲が違います。 だからですかね? >多分必要になるのでは…。と思います。 と言うことは、つまり U列19行以上のどこかのセルの値が変更になったら V,W,X列の13,15,17,19行の、12個のセル全てに 再計算が必要 と言う事ですか? 素人考えですとVLOOKUP関数の引数に使ってあるU列のセルが 変わったところだけ、計算すれば良いのではないかと思うのですが。 例えば、V13セルのVLOOKUP関数がU13セルを参照するなら U13セルが変化したら、V13,W13,X13 は再計算の必要が有りますが U15セルを参照しているハズの V15,W15,X15 は再計算の必要は有りませんよね? 私がコードを読み違えてますかね。。。? (HANA) ---- HANAさん、混乱させてしまい…すいません。 コメント等は忘れてください。イロイロと試したりしていたもので…。 再計算は必要ありません。 その行だけです。 HANAさんのご指摘のWSを削除して、モジュールを変えて試していました。 これでよいのかはわかりませんが、vlookup自体はうまくいきました。 Sub 検索() Dim 範囲 As Range Set 範囲 = Worksheets("検索用").Range("B2:C300") On Error GoTo errMSG For i = 17 To 60 'For・・・Nextで回数を指定して繰り返す。 If Cells(i, "M") = "" Then Cells(i, "A") = "" Else x = Application.WorksheetFunction.VLOOKUP(Cells(i, "E"), 範囲, 2, False) Cells(i, "A") = x End If Next i errMSG: MsgBox "登録していない商品があります。 End Sub ですが、エラー処理がうまくいきません。 M列が空白なら、空白のまま。 空白でないのならば、Vlookupを使い、別シートから値をひっぱってくる。 Vlookupにてひっぱってくる値がなければエラーメッセージを表示させる。 としたつもりだったのですが…。 考え方からしてまちがっていますか? ---- たぶん、こんな感じでいけると思います。 シートモジュールに貼り付けて下さい。 '------ Private Sub Worksheet_Change(ByVal Target As Range) Dim 範囲 As Range, 入力行 As Long If Target.Row < 17 Or Target.Row > 60 Then Exit Sub '17〜60 以外の行なら マクロ終了 If Target.Column <> 5 Then Exit Sub 'E列 以外なら マクロ終了 Set 範囲 = Worksheets("検索用").Range("B2:C300") 入力行 = Target.Row Application.EnableEvents = False If Cells(入力行, "M").Value = "" Or Cells(入力行, "E").Value = "" Then Cells(入力行, "A").Value = "" Else On Error GoTo errMSG 'エラーが発生したら errMSGの行へ移動 Cells(入力行, "A").Value = Application.WorksheetFunction.VLookup(Cells(入力行, "E").Value, 範囲, 2, False) End If 'A列に VLOOKUP関数の戻り値を入力 errMSG: If Err.Number <> 0 Then MsgBox Cells(入力行, "E").Value & " の登録は有りません。" Cells(入力行, "A").Value = "" Cells(入力行, "E").Value = "" End If Application.EnableEvents = True End Sub '------ >エラー処理がうまくいきません。 は「いつでもメッセージが表示される」って事ですよね? これが >それと、これだとエラーにならなくても >I,L,N列に「""」が入ると思いますが って事でした。 エラーが発生して、その行へ行ったのか 上から順番にコードが実行されて その行へたどり着いたのか 確認して下さい。 (HANA) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200902/20090224132736.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97059 documents and 608315 words.

訪問者:カウンタValid HTML 4.01 Transitional