- ベストアンサー
ExcelのVLOOKUPの列番号を一括で変更したい
検索しても自分では見つけられなかったので、質問させてください。 私はExcel2007の一個前のものを使っています。 仕事上、sheet1でVLOOKUPを使い、sheet2(データ入力用シート)の情報を読み取るブックを使っています。 作った人とは連絡が取れないので、知恵をお借りしたいです。 そのExcelのVLOOKUPでは、sheet2の14列目を読み取るようにしていますが、13列目に列を挿入して、15列目(挿入前は14列目)を読み取るようにしたいです。 しかし、sheet1のVLOOKUPは1500行も使っている上に、VLOOKUPを使っている行や別のデータを入れている行もあり、簡単には引数を14から15に変更出来ません。 sheet1のVLOOKUPの14を15に返る簡単な方法は無いでしょうか? つたない説明で申し訳ありません。 宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
たびたび失礼します。#1です。 #2さんの補足に書かれた数式で再現してみました。 置換 検索する文字列「,14,FALSE」 置換後の文字列「,15,FALSE」 上記で問題なく、思ったとおりの置換結果でした。 失礼かとは思いますが、確認です。 置換えはsheet1で行っていますよね・・
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
式は関数では捉えられないので、VBAを使わないとダメと思います。 式を探すとき、全体が全く同じ式にはならない、すなわち第1引数は各行で、通常は式複写で変わる。色々なところに別種のVLOOKUP関数が 使われているかもしれない。検索表が何種も見つからなければ、多分 1種と思うが。 ですから (1)式が設定されているか(HasFormulaで聞ける) (1)VLOOKUP関数である+第4引数False型である (2)第2引数(参照表)が同じ (3)第3引数が14である の時、初めて14=>15にFormulaを設定しなおす そうしないと本当は、危ないと思う。 しかしVBAの経験無いだろうしなあ。 次善の策として既出回答でOKかやってみるか。
お礼
回答ありがとうございました。 VBAはまだあまりよく分からないのですが、ANo.5さんのご回答で上手く出来ました。 でもVBAでも出来るのだとわかり、これからVBAを勉強したいと思っています。 本当にありがとうございました。
- higekuman
- ベストアンサー率19% (195/979)
#3です。 早速やってみたとのことですが、 「ツール - オプション - 全般」で「R1C1 参照形式を使用する」にチェックを入れたときに、VLOOKUP関数を使っているすべての数式が同じになったかどうかを、教えてもらえますか?
- higekuman
- ベストアンサー率19% (195/979)
どんな数式が入っているのか解らないので、何とも言えないのですが、 「ツール - オプション - 全般」で「R1C1 参照形式を使用する」にチェックを入れると、すべての数式が同じになるかもしれません。 その場合は、その数式で検索をかけて、14を15に変えたものに置換するとうまくいくかもしれません。 うまくいかない可能性も十分に考えられるので、セーブしてから行うとか、実験用にコピーファイルを作るとかしてくださいね。
お礼
ありがとうございます。 早速やってみたのですが、私が力不足なため、よく分かりませんでした。 数式は、ANo.2さんの細くに書いたので、もし対応策がありましたら、宜しくお願い致します。
- FEX2053
- ベストアンサー率37% (7995/21380)
=VLOOKUP(Sheet1!A1,Sheet2!$A$1:$Z$1000,14) こんな感じの参照式がずらりと並んでいて、式の第3項目の"14"を 一気に"15"に変えたいんですよね。でしたら「検索」を使えばいい んじゃないかと。 VLOOKUPが書いてあるセルを全部選択、「編集」「検索」の「置換」タブで 「検索する文字列」を「,14)」に 「置換する文字列」を「,15)」にします。 カンマと後ろ括弧まで文字列に入れる点がミソです。素直に「14」「15」 と指定すると、セル参照の式まで(例えばC14がC15に)変わってしまいます ので注意が必要です。 この場合、「全て置換」で一気に作業されてもいいのですが、作業上は 念のため「置換」でひとつずつ確認されたほうがいいように思います。
補足
ご丁寧にありがとうございます。 早速やってみたのですが、一致するものがないというような結果が出てしまいました。 式の一例を書くと、 =IF(ISERROR(VLOOKUP(B1668,●,14,FALSE)),0,VLOOKUP(B1668,横●,14,FALSE)) になっています(●はシート名です)。 度々申し訳ありませんが、御力添えお願い致します。
- simone86
- ベストアンサー率50% (23/46)
こんにちは。 単純に、sheet1の文字列(VLOOKUP関数)の「置換」はいかがですか。 ex. 検索する文字列「,14)」 置換後の文字列「,15)」
お礼
ありがとうございます。 早速試してみたいと思います。 迅速な回答に感謝しています。
お礼
返事が遅れて申し訳ありません。 この方法で上手く出来ました。 置き換えはSheet1でやっていたのですが、他の方法では一致せずに困っていたので助かりました。 本当にありがとうございました。