[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『選択したリストに点数をつけたい』(Meg)
アンケートのようなものを作っています。 アンケートの選択肢毎に点数をつけて、あとで、集計したいと考えています。 私の乏しい知識では、現状のフォーマットをいかそうとすると、リストを使うか、 IF関数を使ってなんとかする方法しか浮かびません。
現状下記のようにしていますが、今のやりかたでなんとかできるのか、それとも 別のやり方があるのか教えて頂ければ幸いです。
点数をつけるというのは後から決まったもので、既にアンケートそのものは、 フォーマット含めてオーサライズされてしまっています。 (列追加レベルは変更可)
アンケートのイメージを簡単に書くと以下のとおり。 ※セルを「-」を使って表現しようとしましたが、うまくいきませんでした。 見づらくて申し訳ありません。
<シート1> アンケート用紙は「アンケート」というシートに作っています。 このシートのイメージは以下のとおり。
A (質問) B (選択肢) C (点数)
1 理解できましたか? Aまあまあ理解できた 1
B1のセルには、リスト指定しています。元の値は「=理解度」と指定。
<シート2> アンケートの選択肢は「アンケートの選択肢」というシートに作っています。 このシートのイメージは以下のとおり。
A (質問) B (点数)
@理解した 1 Aまあまあ理解できた 1 B理解できなかった 3 Cその他 4
Bの列には名前を定義しています。ここでは「理解度」 また、この定義の範囲を以下のようにしています。
=「アンケートの選択肢」!$A$1:$B$5
しかし、上記のアンケートシートでリストを指定しようとすると を実際にやろうとすると、、「リストの元の値は、区切り文字で区切られたリストか、 または単一の行または列しか参照できない」というメッセージがでて、設定不能です。
上記のような状況のため、点数を設定するセル(Bのセル)にIF関数を使って、 選択肢によって、点数が表示されるようにしようと考えました。 選択肢そのもの(例えば「Aまあまあ理解できた」を論理式に入れればうまくいくのですが 「@を含む場合」という定義にしようとするとうまくいきません。
具体的には、C1セルに「=IF(1="*@*",1,0)」と記述しています。 これでは識別されないのです。
IF関数をつかって、「@が選択した場合、Aを選択した場合・・・」というように しようと思ったのですが、論理式に選択肢そのものを入れると式が長くなるため、 避けたいのです。
何かよい方法はありますでしょうか?
>見づらくて申し訳ありません。 すこし修正させていただきました。
(INA)
=「アンケートの選択肢」!$A$1:$A$5 この部分が決まっているなら、名前の定義で 選択肢 として、参照先を =選択肢 としてはどうでしょう。 それで解決するのかな? シート2のB列はVLOOKUP関数でも、INDEX関数でも良いですよね。 (川野鮎太郎)
理解があっているか確認させてください。 「アンケート」のB列は「アンケートの選択肢」のリストを表示させたい。 B列の選択肢の結果により、C列に数値を入力したいということですよね?
>Bの列には名前を定義しています。ここでは「理解度」 >また、この定義の範囲を以下のようにしています。 > >=「アンケートの選択肢」!$A$1:$B$5
としていますので名前は定義されているのでは? それより範囲がおかしいのではないでしょうか?
>「リストの元の値は、区切り文字で区切られたリストか、 >または単一の行または列しか参照できない」というメッセージがでて、設定不能です。 とありますので2列指定はできないのでは? おそらく =「アンケートの選択肢」!$A$1:$A$5 としてみたらうまくいきませんか?
C列の数式に関しては少し時間をください。 (gloomy)
早速の回答ありがとうございます。
あまりの速さに感動しています。
>理解があっているか確認させてください。 >「アンケート」のB列は「アンケートの選択肢」のリストを表示させたい。 > B列の選択肢の結果により、C列に数値を入力したいということですよね?
そうです。
>とありますので2列指定はできないのでは?
そうなのです。それで、リストでは解決できないのではと思い、IF
関数でなんとかできないかと考えているところなのです。
>おそらく =「アンケートの選択肢」!$A$1:$A$5 >としてみたらうまくいきませんか?
はい。これだと、問題ないのですが、選択肢と連動した点数を表示できない
ので、困っております。
>C列の数式に関しては少し時間をください。
すみません・・・。よろしくお願いします。
数式に特にこだわっていないので、このような処理をするのによい方法が
ありましたら、教えてください。
普通にVLOOKUP関数で良いのでは・・・ シート1のC1セル =VLOOKUP(B1,「アンケートの選択肢」!$A$1:$B$5,2,FALSE) (川野鮎太郎)
衝突しました。 そうなんですよね・・・なんだか頭が混乱していたようです。
「アンケートの選択肢」のA1:A5を「理解度」と名前定義。 「アンケートの選択肢」のA1:B5を「点数」 と名前定義。
「アンケート」のB列には入力規則で「リスト」「=理解度」と入力。 C1には =IF(B1="","",VLOOKUP(B1,点数,2,FALSE)) 上記式を下方向へコピー。 やっていることは鮎太郎さんの式と同じなので、 鮎太郎さんの式を使う場合は「点数」の名前の定義はいりません。 (gloomy)
ヘルプでだいぶ検索していたのですが、どれが今回の課題に該当するのか
さっぱりわからずに困っていました。(なにせ経験が浅いので)
川野さんに最初に書いていただいた意味がわからず(理解力がなく・・・)
VLOOKUP関数の使い方をエクセルのヘルプで読んでみたのですが、これまた
どう今回の課題にあてはめるかわかりませんでした。
再度、川野さん、gloomyさんに投稿していただいた方法で試しても、VLOOKUP
の使い方がわかっていないので、正しい結果が得られなくて、しばらく考える
のを中断していました。
でも、もしや「エクセルの学校」のライブラリにあるのではないかと見てみた
ら、とてもわかりやすく書いてあり、理解できました。
結果は、とても単純なミスとわかりました。
本当にありがとうございました。パッと霧が晴れました。
ただ、やはり最初に川野さんに教えていただいた方法の意味がわかっており
ません。もしよろしければ、解説してください。INDEX関数については、
VLOOKUP同様に使えるというのは、理解できているつもりです・・・。
>=「アンケートの選択肢」!$A$1:$A$5 この部分が決まっているなら、名前の定義で >選択肢 として、参照先を =選択肢 としてはどうでしょう。 >それで解決するのかな? >シート2のB列はVLOOKUP関数でも、INDEX関数でも良いですよね。
(Meg)
ごめんなさい、上記はシート1のC列は・・・でした。 結果として、今回解決された方法を言ったつもりだったんですが、シート2のB列って言ったばかりに 要らぬ時間を費やしてしまいましたね。失礼しましたm(._.)m ペコッ (川野鮎太郎)
あっそうだったんですね。なんとなく、そういう気はしていたのですが。 気になさらないでください。本当にありがとうございました。
それにしても、はじめてアクセスさせて頂きましたが、ここのサイトはすばらしいですね。困っている人間に温かく手を差し伸べてくれるので・・・。また、壁にぶつかったら、お邪魔させていただきます。
(Meg)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.