- PR -

VLOOKUPが思うように使えない

1
投稿者投稿内容
未記入@男
常連さん
会議室デビュー日: 2008/01/30
投稿数: 23
投稿日時: 2008-03-30 15:57
VBAでのVLOOKUPがうまく使えません。どなたかご教示いただけたらうれしいです。

詳細は下記からダウンロードしていただいた方が説明するよりいいかと思います。

http://briefcase.yahoo.co.jp/bc/i_am_a_formularacer/vwp2?.tok=bcHmzuaBqMk7BpjL&.dir=/b6bc&.dnm=K%26N.xls&.src=bc



Sheet2にある期限データをSheet3の30/等の横のセルに入れ込みたいのですがうまくいかなくてどうしようもなくなってしまいました。
どなたかお願いします。
coil
会議室デビュー日: 2006/06/03
投稿数: 6
投稿日時: 2008-03-31 00:06
こんばんは、coilと申します。

えーと…ダウンロードしました。
見てみたんですけど何をしたいのか良く分かりませんでした。
見た感じだと納期管理予定表みたいなものなのかな?


で、本題です。

こんな感じで如何ですか?
=VLOOKUP(sheet2![対象セル],sheet2![対象セル],1,FALSE)

もしくはこんな感じ。
=IF(Sheet2![対象セル],Sheet2![対象セル],"")

[対象セル]はSheet2にある期限データの有るセルを当てはめて下さい。
([対象セル] → H20 みたいな感じで)
上記の関数を30/等の横のセルに入れれば表示出来るかと思います。

単純に表示したいならこれで。
もっと複雑な事をしたいなら、何をしたいのか説明して頂かないと分かりません。


以上、参考になれば幸いです。
未記入@男
常連さん
会議室デビュー日: 2008/01/30
投稿数: 23
投稿日時: 2008-03-31 07:08
どうやら説明文のシート1がなくなってしまっていたようです。
コマンドボタンを押すとシート2にあるデータをシート3のカレンダーへ日付に対応した部分へ移動するといったマクロを使いたいんです。
コードの間違いだとは思うのですが・・・・
まりも
ベテラン
会議室デビュー日: 2006/08/19
投稿数: 77
投稿日時: 2008-03-31 12:13
マクロで使用する場合、VLOOKUPの第一引数は数値型でないといけないようです。

ダウンロードしたコードでいうと、

Re = Application.VLookup(CDbl(Arg1), Arg2, 6, False)

という形になりますね。


また、質問に対する答えではないのですが、
Excelを普通に操作するのと比べ、マクロを使った記述は複雑になりがちです。
なので、全部をマクロで操作しようとすると、後で修正することが不可能に近くなったりします。

ですから、出来るだけのことをマクロを使わずに行い、
どうしてもマクロでしか出来ないことだけをマクロで行う、
というような設計にするべきだと思います。

たとえば今回の場合なら、
Sheet3と同じ見た目のシートを隠しシートとしてつくり、
そこにマクロを使わない普通の式で、
VLOOKUPを使って日付を表示しておきます。

そして、ボタンを押したときは隠しシートの内容をそのまま全部Sheet3に値でコピーする、
という部分だけをマクロで記述しておくようにすれば、
Sheet3のレイアウトなどが変更になった場合でも、Sheet3の変更を隠しシートに反映するだけになりますので、
あとあと非常に使いやすくなるのではないでしょうか?
coil
会議室デビュー日: 2006/06/03
投稿数: 6
投稿日時: 2008-04-01 00:36
引用:

未記入@男さんの書き込み (2008-03-31 07:08) より:
コマンドボタンを押すとシート2にあるデータをシート3のカレンダーへ日付に対応した部分へ移動するといったマクロを使いたいんです。


あ、なるほど。
それをマクロでやりたいと言う話だったのですね。
最初にVBAと書いていらっしゃるのにVLOOKUPだけ見て、普通のEXCEL関数だと思って答えてしまいました。
申し訳有りません。(会議室名も良く見なきゃ>自分)

まりもさんが仰ってるように後の事を考えて「出来るだけマクロを使わない」と言うのに賛成です。
作った本人以外もメンテする可能性も有るならなおさらですかねえ。
(変にマクロ組んで修正が面倒になって尚且つ作った本人居ないし。で使わなくなる事がが有ったりします。)
未記入@男
常連さん
会議室デビュー日: 2008/01/30
投稿数: 23
投稿日時: 2008-04-03 22:31
ご迷惑をおかけいたしました。
いろいろやってみた結果回避策があったのでそちらを用いました。
ありがとうございました。

ちなみにevalを使いました。
1

スキルアップ/キャリアアップ(JOB@IT)