• ベストアンサー

Excelで、Sheetを指定してその近似値を参照させる方法

Sheet1のA1には計算式(B1+C1)が入っています。 Sheet2からSheet5には、あらかじめ以下のような 数字と文字を羅列してあります。 A列 B列 10 田中 20 鈴木 30 加藤 さらにSheet1のA2には「Sheet3」のように、 参照するSheetを任意に指定して入力すると、 その指定したSheetのA列から、 Sheet1A1の数字の答えに最も近い値を探し出して、 B列の値をSheet1A3に出す方法は? 意味わかりますでしょうか。もういっぱいいっぱいで 頭がパニック状態です。どうかお助けください!

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

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

Sheet1!A1や各シートのA列の値は整数になりますか? それでしたら下記の式でうまくいくかも A3: =INDIRECT(A2&"!b"&MOD(SMALL(INDEX(65537*ABS(A1-INDIRECT(A2&"!a1:a99"))+ROW(INDIRECT(A2&"!a1:a99")),),1),65537))

ccbcichiro
質問者

お礼

すごいっ!!うまくいきました!!ありがとうございました。

その他の回答 (2)

回答No.3

(1) Sheet2~Sheet5のA列の数字が、すべて10,20,30,とか10単位であれば、ANo1の方の回答に手を加えて、 A3セルに =VLOOKUP(ROUND(A1,-1),INDIRECT(A2&"!"&"A1:B3"),2,0) とA1の値の1の位を四捨五入してやれば、近似値になると思います。ただし、この式では、A1の値が、Sheet2~Sheet5のA1より小さいか、A3より10以上大きい場合はエラーになります。 そこで、式は複雑になりますが、それぞれの場合分けを考慮すると、 =VLOOKUP(IF(ROUND(A1,-1)=0,INDIRECT(A2&"!A1"),IF(MAX(INDIRECT(A2&"!A:A"))<A1,MAX(INDIRECT(A2&"!A:A")),ROUND(A1,-1))),INDIRECT(A2&"!"&"A1:B3"),2,0) という式でいけると思います。 (2) 上記の場合のようにSheet2~Sheet5のA列が10単位でもなく、ランダムだった場合(ただし、昇順に並んでいるのは必須です)、 補助計算にB2、B3セルを使って、以下の式で出来るのではないかと思います。 B2セルに =IF(A1<INDIRECT(A2&"!A1"),INDIRECT(A2&"!A1"),VLOOKUP(A1,INDIRECT(A2&"!A1:B3"),1,1)) B3セルに =IF(MAX(INDIRECT(A2&"!A:A"))<A1,9999,INDEX(INDIRECT(A2&"!A1:B3"),MATCH(B2,INDIRECT(A2&"!A1:A3"),0)+1,1)) そして、A3セルには =INDEX(INDIRECT(A2&"!B1:B3"),MATCH(B2,INDIRECT(A2&"!A1:A3"),0)+((B2+C2)/2<A1),1) という式を入れます。 B2セルは上記の(1)と同じで、A1セルを越えない最大値を求めています。 B3セルはそのすぐ下のセルの値を求めています。 B2とB3セルにIF関数を使っているのは、先述したSheet1!A1の値が参照SheetのA1より小さい場合と、最大値より大きい場合にエラーになるのを防ぐためです。 A3セルでは、B2セルと同じ位置の値を得ているのですが、行位置に((B2+C2)/2<A1)を加えていることで、C2の値に近い場合は1つ下(C2の値の場所)になるように計算しています。

ccbcichiro
質問者

お礼

ありがとうございました。試してみます。助かりました!!

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

もっとも近いって所が難です。 同じ値なら =VLOOKUP(A1,INDIRECT(A2&"!"&"A1:B3"),2,0) 未満なら =VLOOKUP(A1,INDIRECT(A2&"!"&"a1:B3"),2) で良いと思います。

ccbcichiro
質問者

お礼

早速ありがとうございます!! 最も近い値、ってのは、Excelではやはり 不可能なんですかね…。残念

関連するQ&A

  • EXCELで別シートを参照する計算式

    こんにちは。EXCEL2002を使用しています。 1つのファイルに個人別シートと集計シートがあり、個人別のシートのシート名は個人の 名前を付けています。(集計)(田中)(鈴木)(小松)・・・と言った感じです。 個人のシートのフォームはまったく同じ表が作られていて、 集計シートのA列に名前、B列に下記のように計算式を入れています。   A    B 1 田中 ='田中'!$D$1 2 鈴木 ='鈴木'!$D$1 3 小松 ='小松'!$D$1 このような場合、A列にシート名と同じ名前が入っていた時に ='(集計シートのA列)'!$D$1 のような計算式で参照させる事は出来ますか? シート名を置き換えすることなく、同じ計算式が使えると良いのですが。

  • EXCELで別のシートのデータを参照して返す方法

    ちょっとしたことなのですが、うまく式が書けなくて悩んでいます。 作業用のシート1と参照用のシート2があり、 シート1のA列には  あおき  あべ  いぐち  いはら などと文字列(名前)が入力されています。 こちらは今度の野球のスタメンだと思ってください。 シート2にはA列とB列があって、 わたなべ 55 いぐち  43 あおやま 67 いはら  41 などと、名前:背番号が羅列されています。こちらが参照用の全選手の背番号リストだと思ってください。 ここで、 シート1のB列に、A列の名前に対応した背番号を返したいのです。 なので、シート1のB列に IF(シート1のA列の値=シート2のA列のいずれかの値)だったとき、 適合したシート2の行のB列の値を表示する という式を入れたいのですが、どのように式を書けばよいでしょうか。 すみませんがどなたか教えてください。

  • シートの合計

    よろしくお願いします。 エクセルでシート1~3迄あります。各シ-トのA列は名前、B列に数字が入っています。名前はA列のどの行にあるかわかりません。 同じ名前をシート4のA1に入力したらその名前の合計を出したい。  シート1    シート2   シート3       シート4   A   B    A   B   A    B     A    B 山田 10   木村  5  佐々木 18   木村  55  鈴木 20   田中 21  伊藤  33    ↑ 木村 50   山下 70  加藤  57  (入力する) 田中 15   高橋 90  佐藤  61 高橋 60   山田 10  鈴木  12             ・   ・   ・          

  • EXCEL 一覧シートから各シートへ参照

    現在シートが 一覧、1、2、3、 とあります。 一覧シートには、 シート名(A1) 名前(B1) 1(A2) 山田(B2) 2(A3) 鈴木(B3) 3(A4) 木村(B4) と記載されております。(カッコ内は、セルの位置です) シート 1 のA1には、山田 シート1のB2を参照 シート 2 のA1には、鈴木 シート1のB3を参照 シート 3 のA1には、木村 シート1のB4を参照 とシート 一覧から参照して表示されるようにしたい と考えております。 数字の名前のシートが数個であればシート毎に入力すれば済む話ですが、 予定では、順次増え、最終的には100位になる予定です。 数式、マクロ VBA 等を使って  一覧シートに名前を入力すると該当のシートのA1セルに参照させる事は可能でしょうか? よろしくお願いいたします

  • エクセルの他シートからの参照方法について

    エクセルファイルで他のシートからデータを参照して反映させたい場合について、操作が分からないことがあるのでどなたか教えて下さい。 説明がうまくできていなかったらすみません。 sheet1のA列にsheet2のB列のデータを反映させたい場合、sheet1のA1に「=sheet2!b1」sheet1のA2に「=sheet2!b2」…というように設定し、以下は設定済みのA列を選択して下にドラッグしていけば連続データとして参照式が反映できると思うのですが、参照したいデータが連続したセルでない場合の方法が分かりません。 たとえば、sheet1のA1にはsheet2のb1、sheet1のA2にはsheet2のb11、sheet1のA3にはsheet2のb21…というように、反映させたいシートのセルは連続しているのですが、その参照元となるシートのセルは一定の間隔を空けて飛んでいる場合、上記と同じようにドラッグしても、セルの値におかしな数値が入ってしまいます。 仕方がないのでひとつひとつ参照先となるセルを手入力している状態ですが、効率が悪いので、ドラッグ等で一気に参照元を指定したいのですが、どのようにしたらいいのでしょうか? よろしくお願い致します。

  • エクセルで別シートを参照していて、参照元のデータを変更した場合

    エクセルで別シートを参照したいのですがうまくいきません。 (1)Sheet1には顧客データが入っています。 【Sheet1】   A   B   C 1 氏名 住所 性別  2 小川 東京 男 3 佐藤 大阪 女 4 鈴木 福岡 女 (2)Sheet2ではSheet1の顧客データの一部+獲得ポイントのデータが入っています。Sheet2のA列とB列に「=Sheet1!A2」とういう風に関数を入れてSheet1を参照しています。C列~は手入力でデータを入力しています。 【Sheet2】   A   B    C    D 1 氏名 住所  12/1 12/15  2 小川 東京  1    5 3 佐藤 大阪  1    5 4 鈴木 福岡  1    5 (3)Sheet1に新たに顧客情報を入れますが、氏名は五十音順にしたいので行を挿入して入力します。(行3に加藤さんを入れました) 【Sheet1】   A   B   C 1 氏名 住所 性別  2 小川 東京 男 3 加藤 沖縄 男 4 佐藤 大阪 女 5 鈴木 福岡 女 (4)私の希望としては、(3)をしたらSheet2は↓のようになってほしいのですが、実際には(2)の状態のままです。 【Sheet2】   A   B    C    D 1 氏名 住所  12/1 12/15   2 小川 東京  1    5 3 加藤 沖縄   4 佐藤 大阪  1    5 5 鈴木 福岡  1    5 (5)Sheet1の変更結果をSheet2に反映することは無理なのでしょうか?

  • 別シートの参照値を反映したい

    別シートの参照値を反映したい book内にSheet1~4まであります。 Sheet1のA1には、Sheet2~4という文字列が入ります。 Sheet1のB1には、Sheet2~4のセルの番地のみ入力されています。 Sheet1のA5に「="="&A1&"!B1"」と入力した際に文字列ではなく参照先の数字が反映される ようにしたいのですが、可能でしょうか? ちなみにコピーして値のみ貼り付け、F2を押せば数字が反映されるのですが、関数を残して おきたいと考えています。 ご教示お願いいたします。

  • エクセルシートの行列入れ替え参照

    エクセルのシートで、行と列を入れ替えて参照する ことができるでしょうか? 例えば、参照元のSheet1が以下の様になっていると します。 参照元<Sheet1> A   B    C 1  佐藤   遠藤   鈴木 2  数学   国語  社会 3  100    80   70 これを、Sheet2で以下の様に参照したいと思って います 参照先<Sheet2> A    B    1 =Sheet1!A1 =Sheet1!A3 2 =Sheet1!B1 =Sheet1!B3 3 =Sheet1!C1 =Sheet1!C3 1行目に数式を入れて、2行目以下にドラッグして コピーしようとすると、 =Sheet1!A1 =Sheet1!A2 =Sheet1!A3 の様になってしまうので、どうしたものかと途方 にくれております・・・。 以上、解決策を教えて頂けますと大変助かります。 よろしくお願い致します。

  • Excelのセルの参照について

    Excelでセルを参照するにはB3やA7などのように指定しますが、以下のような参照はできるのでしょうか? 1、任意のセルに何らかの数字が入っている状態で 2、その数字を行として参照する。 たとえばA7に3という数字が入っているとします。 そのA7の値を行番号としてB3やC3を参照する、といった具合です。 あまりうまく説明できないのですが、情報が不足していましたらまた補足します。 よろしくお願いします。

  • エクセルの他シート参照

    エクセルで、同ブック内の他シートのセルを、式で参照したいのですがうまく行きません。 Sheet1のL列のある行の内容をのSheet2のA15に参照したいです。 たとえば、30行目を参照するのであれば、 =Sheet1!$L$30 で参照できました。 しかし、Sheet2のA17にある数値から13850を引いた値の行(たとえば、13880とSheet2のA17に入力されていたら、30行目)を参照するために、 =Sheet1!$L$(A17-13850) と入力したのですが、「入力した数式にはエラーがあります」とエラーが表示されてしまいます。 (Sheet2のA17の値によって、Sheet2のA15に参照されるSheet1の行が変わるようにしたい) どのように指定したら正しく参照できるでしょうか。 ご回答よろしくお願いします。

専門家に質問してみよう