ID非公開

2020/9/20 7:02

22回答

Excelの関数について、参照セルの途中を変数にしたい時はどうすればいいのでしょうか。

Excelの関数について、参照セルの途中を変数にしたい時はどうすればいいのでしょうか。 現在 =VLOOKUP(Sheet1!A1,Sheet2!B:B,2,TRUE) の関数を入力しているセルがあるのですがこのSheet1!A1におけるAを変数として、Sheet3(この関数があるシート)のC1にある値(”あ“〜”ん”)によってSheet1!B1にしたり、Sheet1!C1にしたくアルファベットを変えたい次第です。 A1の数字部分を変数にしたらINDIRECT関数が使えるとも思いましたが、この下にもリストが続いていて、そちらに数字部分の変数(オートフィル)を設けているので難しいです。 また、愚直にSheet1!A1の部分をIFS関数を使ってIFS(C1=“あ”,Sheet1!A1,C1=“い”,Sheet1!B1……) としようとも思ったのですがそうなるとオートフィルが上手いこと動いてくれなくて諦めました。 セルの途中のアルファベットを戻す方法や、それ以外にこの目的を達成するいい方法があれば教えていただけないでしょうか?

補足

具体的に補足させていただきます。(質問本文の数式や文字は仮定で置いてしまっているので全て以下が正しいです。) 現在試みている内容は自作単語帳から任意の範囲でテストを作成するという物です。 単語帳作成をして任意の範囲での乱数作成をしてランダムな順番でテストを作成しようと思っています。テストは1個1個出すシステムではなく、紙に印刷して試験にできるように1〜100問までずらっと出す形にしようと思っています。 Sheet1のA列は通し番号、B列に英単語を1500個書いています。 そして問題の順番をランダムにするためSheet2で乱数作成をしています。A列では1〜100、B列では101〜200と、100刻みで1500まで作っています。 Sheet3にてテスト本体を作成しています。 A1セルにテスト範囲(1〜100、101〜200と100刻みで1500まで)をドロップダウンで入力するようにしています。 問題の単語を出すセルに =VLOOKUP(Sheet2!A1,Sheet1!A:A,2,TRUE) と書いてA1の部分をA2、A3としながらA100までフィルコピーしています。 ここで、テスト範囲を変更した際にSheet2の別の列を参照させることで動作させたいのですが上手い方法がわからずご教授いただきたい次第です。

Excel | Visual Basic28閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ID非公開

2020/9/20 7:30

細かい規則が分かりませんし、IFSでオートフィルがうまくいかないという理由も分かりませんが(なお連続データではなくて数式なのでオートフィルという言葉はおかしいです。フィルコピーの事を言われているのでしょうけれども)、例としてSheet3!C1が "あ"ならSheet1!A1 "い"ならSheet1!B1 "う"ならSheet1!C1 "え"ならSheet1!D1 を参照したいとします。この場合 =VLOOKUP(Choose(Match(Sheet3!C1,{"あ","い","う","え"},0),Sheet1!A1,Sheet1!B1,Sheet1!C1,Sheet1!D1),Sheet2!B:B,2,TRUE) とすればIFSで書くより少しマシじゃないでしょうか。SWITCHが使えるなら =VLOOKUP(SWITCH(Sheet3!C1,"あ",Sheet1!A1,"い",Sheet1!B1,"う",Sheet1!C1,"え",Sheet1!D1),Sheet2!B:B,2,TRUE) とすればもうすこしマシです。 IFSがうまくいかない原因が分からないので、どれも同じことでしょうけれども。 それに”あ“〜”ん”って50個くらいあるんですよね? それならいずれにせよ全部並べて書くのは大変です。 どこかに表を作ってVLOOKUP関数などで検索するとかしたほうが良さそうに思いますが、コピーしてどこを参照したいのか規則が不明なのでなんともならないですね。 ”あ“〜”ん”じゃ大変なので、とりあえず、”あ“〜”う”とかでいいから、もっと具体的な事を説明された方がいいかと思います。

ID非公開

質問者

2020/9/20 7:50

ご回答ありがとうございます。フィルコピーと言うのですねありがとうございます。一般化させようとして逆に分かりにくくなってしまったこと反省しております。現在試みている状況につきまして補足させていただきましたのでお時間がございましたらご指導いただけましたら幸いです。

ThanksImg質問者からのお礼コメント

お二方ともありがとうございました。甲乙つけがたかったのですが早めに回答いただけた方をベストアンサーとさせていただきます。ありがとうございました。

お礼日時:9/20 9:31

その他の回答(1件)

0

例えば =VLOOKUP(OFFSET(Sheet2!A1,0,C1),Sheet1!A:B,2,FALSE) のようにすればc1の数値に応じて可変できます。 c1を数値ではなく文字列にしたいならば それもどこかにリストを作って VLOOKUPで参照すればよいと思います。

ID非公開

質問者

2020/9/20 8:54

ご回答ありがとうございます。少しやってみます。