• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003 Match関数について)

Excel2003 Match関数について

このQ&Aのポイント
  • Excel2003のMatch関数について教えてください。VBAを使用してデータベース検索を行いたいのですが、特定のキーでの検索がうまくいきません。
  • Excel2003のMatch関数は、指定した値を検索範囲内で探し、該当する位置を返します。しかし、希望するキーでの検索ではエラーが発生してしまいます。
  • Vlookup関数では、検索する値は検索範囲の最初の列になければなりませんが、Match関数でも同様の制約があるのでしょうか?他の検索方法も教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

データの範囲を明示的に指定すれば、別の列でも検索できるようにはなります。理由はよく判りません。 それと[データ]の範囲は拡張してますか? 例えば、キーがF列の場合、 Hit = WorksheetFunction.Match( _ .[B1], [データ].Range("F1:F99"), 0) On Error GoTo 0

muuuug
質問者

補足

たびたびありがとうございます。 昨日より、ずっと頭を抱えております。 このプログラムでB1の値と[データ]の値についてなのですが、[データ]にある値をB1にコピーしても 一致する値がないと返ってきてしまいます。 御指摘のようにしても、同様なのです。 単純なこと(例えば変数の文字列宣言しているとか。(確認済みですが))なのでしょうが 理解できません。 デバッグでB1の値と[データ]の値を見てもどう見ても同じ数字なのですが、認識しません。 [データ]の値を手打ちで直してみても同じなのですが。 おわかりになれば、御指導下さい。 宜しくお願い致します。

その他の回答 (3)

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.4

#3です。 すみません。 どうも動作仕様を誤解していたようです。 検索したいのは [データ]範囲の【51列目】 すなわち [データ].Columns(,51)  '[データ]の51列目 なのですね。 質問文のコードは 「行と列が逆」なのではなく 「検索する列を指定できていない」でした。 no = WorksheetFunction.Match( _ .[B1], [データ].Columns(,51), 0) として、 [データ]の【51列目】を検索するようにしてやれば通るかと。 --------- 先述のとおり [データ].Resize(, 1)  '[データ]の1列目 A列のことなので てっきり [データ].Resize(1)  '[データ]の1行目 を検索する場面かと思ってました。 勘違い怪答大変失礼いたしました。 <(_ _)>

muuuug
質問者

お礼

締め切り後にもかかわらず、わざわざありがとうございます。 ためしてみますね(*^^)v 本当にありがとうございました。 また、多分いろいろ質問すると思いますが宜しくお願い致します。<m(__)m>

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.3

ぇっと、行と列が逆になってますけど? -------------------------------------  [データ].Resize(, 1) というのは  [データ]範囲の【 1列目 】 つまり、A列のことです。 検索したいのは  [データ]範囲の【 1行目 】  すなわち  [データ].Resize(1) なのでは? ------------------------------------- 転記部分も  .[B5] = [データ].Cells(no, 2) というのは  [データ]範囲の第no【行】目の値をB5に転記する 記述になってます。 以上ご参考まで。

muuuug
質問者

お礼

ありがとうございます。本当ですね 訂正して、うまくいけば本当に単純なことだったんですね。 う~ん。でもやっぱり症状はかわらないので、MATCH関数を使わない別の方法でやってみます。 どうもありがとうございました。

muuuug
質問者

補足

その後、いろいろ試してみたところ、[データ].Range("AY1:AY65531"))と".Resize(1)をはずすと うまく値をひろってきました。”AY65531はシートの最後の値65536から一番上の空白行3行とフィールド行の4行分をひいた値でうまくいきました。 いろいろありがとうございました。 これで一応解決(?)とさせていただきます。

回答No.1

gokui6.exeのどのファイル? AY列、これは日付?

muuuug
質問者

補足

jazzcorpさんありがとうございます。 補足します。 極意の5章5です。AY列は、請求番号になります。 宜しくお願いします。