• ベストアンサー

Excelの式

Excelの説明を読んでもどうもうまくいかないのでお世話になります。 ある統計の処理です。 A列に3~30までの値のどれかが入っていて、B列にはそのA列の値によってさらに1~10までの10段階に分けるというものです。 要するにA列が29~30ならB列が10、A列が26~28ならB列が9、A列が23~25ならB列が8、以下この調子でA列が3~4ならB列が1というふうに続きます。 IF、AND、あるいはVLOOKUPのようなものを使うようですが、どうもうまくいきません。 また分けたあとのB列の10が○個、9が○個、以下1が○個まで、といった表も作ってみたいのですが。 こんな相談を文章でわかりにくく申し訳ありません。よろしくお願いします。

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

IF関数で条件分岐していけばいいと思いますが、確か7つまでではなかったでしょうか。 そうでなくとも、面倒なので、私なら以下のように処理します。 1.別に表を作る。 例えばSheet2 のA1から縦に3から30までの数値を。 B列には対応させたい段階を入れておく(1から10) 2.そのうえで、当初のB1に、 =VLOOKUP(A1,Sheet2!$A$1:$B$28,2,0) として、下に引っ張れば大丈夫です。 3.分けた後の数については、 例えば、E1から縦に10から1まで数値を。 それでF1セルに =COUNTIF(B:B,E1) として、下に引っ張ればOKです。

abeeyroad69
質問者

お礼

ご丁寧な回答ありがとうございます。 おかげさまで全て結果的になんとかできました。が、 2の説明の( )の最後の2と0の意味がわかりません。 また$もどういう意味なのでしょうか。 3は簡単でした。 お手数をかけてすみません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

前者はVLOOKUPのTRUE型(第4引数がTRUE)を使えば出来ます。 要点は昇順に」表を作りますが、その作り方のあります。境界の 以下、以上、未満を良く考えて、テストをやってみることです。 後者はFREQUENCY関数で出来ると思います。 検索表の部分は 20以上の部分は G列  H列 ・・(略) 20 7 23 8 26 9 29 10 でよいようです。 式は =VLOOKUP(A1,$G$1:$H$5,2,TRUE) のようなカタチです。$H$5の部分は検索表全体範囲に変えること。 $は必須。 結果 ・・略 20 7 21 7 22 7 23 8 24 8 25 8 26 9 27 9 28 9 29 10 30 10 ーーー FREQUEVCY関数はGoogleで調べるか本を調べてください。 http://kokodane.com/kan47.htm 以下多数出ます。

abeeyroad69
質問者

お礼

とてもよくわかりました。 みなさん本当にありがとうございます。

noname#77845
noname#77845
回答No.2

#1さんの補足です。 =VLOOKUP(A1,Sheet2!$A$1:$B$28,2,0) の最後の2は(1)で作成した表の2列目の値を持ってくることを表しています。 そして、最後の0の場所は本来TRUEかFALSEがくるのが正しい形なのですが、エクセルは0とFALSEは同じで0以外はTRUEなので、#1さんの書式でも動きます。 この値の意味は、「検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを、論理値で指定します。TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。FALSE を指定すると、検索値と完全に一致する値だけが検索され、見つからない場合はエラー値 #N/A が返されます。」以上ヘルプからの抜粋。 なので、検索値が完全に表の中の値以外現れないなら、今回の場合昇順に並んでいるので、省略しても動きます。 一列目の値で検索して該当する二列目を持ってくるので、このような記載になります。 また、$はコピーしてもその行番号や列番号が動かない絶対参照を表しています。試しに$A$1の$を外してA1にし、下にコピーしてみると判ります。A2,A3,A4…と行番号が変化していくのが判ると思いますよ。 但し、今回の場合縦にしかコピーしないのなら「$A$1」を「A$1」に、「$B$28」を「B$28」に変更しても大丈夫。列の移動がないので変化しませんからね。

abeeyroad69
質問者

お礼

とてもよくわかりました。 詳しく教えていただきありがとうございました。