• 締切済み

エクセルの関数に詳しい方教えてください。

月の利用料の算定表を作っています。 一部、関数の使用方法がわからない箇所があり、困っています。 わかる方教えてください。よろしくお願いします。 シート1は算定表、シート2は単価表です。 シート1に単価を表示させたいセルがあります。 シート2には列に区分1~5、行には4月~3月の月が入力されている、区分と月に応じた金額(単価)がわかる表を作成しました。 シート1上にシート2に対応する、区分コード(行数)と月コード(列数)を作成して、OFFSET関数を使用して検索したのですが、うまく表示できません。 私としては、 シート1のあるセルに、シート1に入力した区分コードと月コードに対応する、シート2の金額を表示させたいのですが… 使用方法が間違っているのでしょうか? そもそも、使用した関数が間違っているのでしょうか? もしくは、他の関数と組み合わせ使用すればいいのでしょうか? 説明が下手ですみません。こんな内容でも、わかったよ!という方がいらっしゃいましたら、お願いします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、Sheet2のB1~M1に月が並んでいて、A2~A6に区分が並んでいて、Sheet1のA1セルに区分を、Sheet1のB1セルに月を入力すると、Sheet1のC1セルに単価が表示されるものとします。  その場合、OFFSET関数、INDEX関数、VLOOKUP関数、HLOOKUP関数などが使えます。  基本的なやり方としては、Sheet1のC1セルに入力する関数としては、以下の様なものがあります。 =IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"",OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!$A$2:$A$6,0),MATCH(B1,Sheet2!$B$1:$M$1,0))) =IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"",INDEX(Sheet2!$B$2:$M$6,MATCH(A1,Sheet2!$A$2:$A$6,0),MATCH(B1,Sheet2!$B$1:$M$1,0))) =IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"",VLOOKUP(A1,Sheet2!$A$1:$M$6,MATCH(B1,Sheet2!$A$1:$M$1,0),FALSE)) =IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"",HLOOKUP(B1,Sheet2!$A$1:$M$6,MATCH(A1,Sheet2!$A$1:$A$6),FALSE))  上記の関数は、区分名や月名が数字ではない場合や、並び方が順不同である場合にも有効な方法ですが、 もし、区分が1から始まる整数のみで、且つ、Sheet2のA列に1から順番に、欠番無しに並んでいる場合に限れば、次の様に簡略化する事が出来ます。(ANo.1様の御回答も、列と行が入れ替わってはいるものの、同様に、区分が1から順番に欠番無しに並んでいる必要があります) =IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"",HLOOKUP(B1,Sheet2!$A$1:$M$6,A1+1,0))  尚、上記の関数中の IF(OR(COUNTIF(Sheet2!$A$2:$A$6,A1)=0,COUNTIF(Sheet2!$B$1:$M$1,B1)=0),"", という部分はA1セルやB1セルに、何も入力されていない場合や、「13月」等の誤った値が入力された際に、エラーが表示されて、見栄えが悪くなる事を防ぐための処理を行う部分です。  もし、未入力の際にエラーが出ても構わない場合には、次の様な関数になります。 =HLOOKUP(B1,Sheet2!$A$1:$M$6,A1+1,0)

ouma0619
質問者

お礼

お礼が遅くなりましてすみません。 エクセル関数はいろいろな組み合わせで活用できるんですね。 頑張ってみようと思います。 ありがとうございました。

回答No.1

OFFSETでできます。 シート2のA~E列に区分1~5、1~12行目に4月、5月、…12月、1月、2月、3月のデータが順に入っているとします。 Sheet1の セルA2 に月、 B2に区分が入っている場合、 =OFFSET(Sheet2!$A$1,MOD(A2-1+9,12),B2-1) としたらいいです。

ouma0619
質問者

お礼

お礼が遅くなりましてすみません。 いただいた回答を頼りにいろいろ試してやってみようと思います。 ありがとうございました。

関連するQ&A