• ベストアンサー

エクセルでこれをやってみたいんですが。良い方法を・・・。

 氏名 出欠(1) 出欠(2) (1)(2)とも出席 どちらか出席  Aさん 1      1      ○  Bさん 1      欠             ○  Cさん 欠      1             ○ A列に氏名、B列に1回目の出欠、C列に2回目の出欠、で出席の場合「1」欠席の場合「欠」と入力しています。D列に「(1)も(2)も出席の場合」○、E列は「どちらか出席」で○としたいと思っています。 ○を出すためにIF関数で=IF(A2+B2=2,"○","")としたのですが、「欠」という文字列のためエラーが出てしまいます。「欠」を「0」と入力すれば問題がないのはわかるのですが、プリントアウトし他人に見やすくするために「欠」としたいのです。表示形式→ユーザー定義→”欠"#,###とすればエラーは出ないのですが、一つ一つコピーは面倒なのです。何か良い方法はありませんか?

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

  • ベストアンサー
noname#9284
noname#9284
回答No.13

> 「あれ?このセルなんでこんなふうに表示されているんだろう???」 ありますあります! 趣向を凝らした(?)自信作など特に、後から振り返ると何がどうつながってこう設定したんだろうと 不思議になる事があります。 プログラムのようにコメントをいちいち入れておくといいんですが。 (なのでコメントはちょくちょく挿入しています) ファイルを他人に渡しても使ってもらえるくらいの親切設計で作って置かないと、 3ヶ月も経てばどうやってファイルを作ったかすっかり忘れてしまって手直しできない事もあります。 あまり複雑にされない方がいいかもしれませんね。 minatomo さんですからここで覚えられた事はメモなどに残され、 きっと近いうちにマスターされていると思います。 > 他のシートに○の数を反映させる必要 ←再び DOUNTIFで○の数を数えているセルを切り取って別なシートに移動すると =IF(SUM(Sheet1!B2,Sheet1!F2)=2,"○","") のようにシート名が自動的に付きますので、 手入力して間違えて#NAME?エラーが出たりしなくて済みます。 頑張ってくださいね。私が質問した時にはご回答を宜しく。 最後に、私が書かせていただいた事は大概他の方からもご提案が出ていますので、 是非全員の方にお返事を書いてくださるようにお願いいたします。

その他の回答 (13)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.14

このような方法もあります。 =IF(AND(B1=1,C1=1),"○","")・・・両方出席の場合 =IF(OR(B1=1,C1=1),"○","")・・・片方出席の場合 あと、エクセルには入力規則という設定が有ります。 出欠を入力するセルに「データ」「入力規則」で 「設定」タブの「入力値の種類」を「リスト」にして 「元の値」を「出,欠」としてください。 セルを選択すると、右に▼がでます。これをクリックすると「出」「欠」を選択可能です。 この場合は、B1=1,C1=1の所をB1="出",C1="出"で応用できます。

noname#9284
noname#9284
回答No.12

> ユーザー定義についてはほとんど無知なので、興味しんしんです。 そうですか、興味を持っていただいて幸いです。 今作られているファイルに関連するユーザー定義の書式でしたら・・・そうですね・・・ 欠席の場合(つまり0の場合)「欠」を赤で表示する G/標準;G/標準;[赤]"欠" 更に出席の場合(つまり1の場合)「出」を青で表示する [青][=1]"出";G/標準;[赤]"欠" ただし注意事項があります。大切なことです。 嬉しくて書式を多用したシートをたくさんコピーして増やしていると、 突然「表示形式を追加できません」などと言われ、ファイルが壊れて開けなくなる事があります。 書式の設定はユーザー定義にかかわらず、無駄な多用は避けてください。 たまにはCtrl+Endを押して、シートが使用されている領域の最後のセルに飛び、 セル領域を無駄に使ってファイルサイズをやたら増やしていないか確認してください。

minatomo
質問者

お礼

ほんと、素人的質問に対してもていねいに答えていただいて感謝感謝です。これも素人的考え方なのですが、実はユーザー定義は後で振り返るときに素人には辛いんです。何を言いたいかといいますと、関数入力だとそのセルをクリックすればどんなことをそのセルで行ったかが一目瞭然なのですが、ユーザー定義をしていた場合、後で振り返ったときに「あれ?このセルなんでこんなふうに表示されているんだろう???」ってことになっちゃうんです(私の記憶力の問題なんですけどね)。←これって本当に素人の嘆きなんだろうな・・・ああ、早く脱出したい。 それと、hirorin2004さんのアドバイスを参考に今回はIF関数で行こうと思いました(「ファイルが壊れて開けなくなる事」はとっても怖いんで・・・)。 二通りも考えてくださって本当にありがとうございました。ユーザー定義も勉強したいと思います!!

noname#9284
noname#9284
回答No.11

ANo.#8 ANo.#9です。 > =IF(SUM(B2+F2)=2,"○","")  おしいです。目のつけどころは良かったんですけど。 =IF(SUM(B2,F2)=2,"○","") という具合に合計したいセルをカンマで区切ってください。 セルがつながっている時のみ「B2:C2」のように書けます。 > 他のシートに○の数を反映させる必要 他にも何かご要望がありましたらなんなりと。 (出来る範囲でということで)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.10

#7です。書き漏らしました。 B、C列の書式は、   [=1]"○";[=0]"欠" です。 [=1]"出席";[=0]"欠席" のようにしてもかまいません。

noname#9284
noname#9284
回答No.9

ANo.#8 です。 もう一つの回答を書かせていただきます。 入力が1か0なら楽だとおっしゃっていますので。 またしても minatomo さんの作られた表を生かします。 ただし欠席の場合は「欠」という文字ではなく、「0」と入力してください。 「0」と入力しても「欠」と表示される方法を書かせていただきます。 B2:C4を範囲選択しまして、右クリック→セルの書式設定→表示タブ→ユーザー定義→種類を 「G/標準;G/標準;"欠"」としてください。 かっこは必要ありません。かっこの中身だけ貼り付けてください。 「プラスの場合は標準の書;マイナスの場合も標準の書式;ゼロの時は”欠”と表示」 という意味の書式です。 1か欠を直接入力していた時には 1は数値、欠は文字列ですからセルの右端や左端に寄ってしまって文字位置が揃わなかったと思います。 上記の方法で書式を設定してやりますと、欠も右揃えに表示されます。 数式はそのまま使えます。 やはり1か0で入力して行くのが効率がいいですよね。 欠席の場合にセルを飛ばしていると、入力リズムが崩れて作業スピードが落ちますから。

minatomo
質問者

お礼

完璧でした。ありがとうございます。文字位置まで助言して頂いて、すっきりしました(表の見た目も”気持ち”も)。「G/標準;G/標準;"欠"」は勉強になりました。「プラス・マイナス・ゼロ」で場合分けできるんですねユーザー定義って。「プラス・マイナス・ゼロ」の3つの場合分けのみなんでしょうか?きっと他の応用も利くんでしょうね。ユーザー定義についてはほとんど無知なので、興味しんしんです。

noname#9284
noname#9284
回答No.8

minatomo さんの作られた表をそのまま生かします。 > =IF(A2+B2=2,"○","") 出欠の欄はB列C列なので =IF(B2+C2=2,"○","") で宜しかったでしょうか。 で、○を返すのはD列E列ですね。 D2に =IF(SUM(B2:C2)=2,"○","") と入力し、 このセルを下までコピーしてください。 E2に =IF(SUM(B2:C2)=1,"○","") と入力し、 このセルを下までコピーしてください。 上記の数式がどうしてエラーにならないかと申しますと、 SUM関数は文字列を無視して数値だけを合計してくれるからです。 しかし、SUM関数の合計範囲の中にエラー値があると SUM関数はエラーになってしまいますので、これだけが注意ですね。 オマケですが、D21に =COUNTIF(D2:D20,"○") と入力し、このセルを右のセルにコピーします。 D21には両方出席した人の数が、E21には片方だけ出席した人の数が戻ります。 (範囲は適当に調整してください)

minatomo
質問者

補足

hirorin2004さんありがとうございます。 =COUNTIF(D2:D20,"○") これ重要でした。他のシートに○の数を反映させる必要があったので助かりました。1歩先までのアドバイスうれしいです。 ただ、説明不足だったのですが、実はB2,C2は隣のセルではなく(C2は実はF2なんです)間に他のデータが入っていて(しかも1or0で)範囲指定で合計できないのです。「SUM関数は文字列を無視して数値だけを合計してくれる」ということでしたので、試しに=IF(SUM(B2+F2)=2,"○","") などと無茶してみたのですが…  できませんでした(=IF(B2+F2=2,"○","") のとき同じエラー表示)。なんでですかね?やっぱり、式自体に無理があるのかな?

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.7

   A    B    C       D       E 1  氏名  出欠(1) 出欠(2)  (1)(2)とも出席  どちらか出席 2 Aさん   ○    ○       ○ 3 Bさん   ○    欠               ○ 4 Cさん   欠    ○               ○ 出欠の事例でいうと、  出席 = 1、欠席 = 0 で入力します。  D2 の式は = B2+C2 、セルの書式をユーザ設定で [=2]"○"; とします。  E2 の式も = B2+C2 、セルの書式をユーザ設定で [=1]"○"; とします。   D2:E2を下にコピーします。 この方法で行えば、1または0の入力を条件にして、   出席して食事をしたかしないか   なにか購入したか、しないか なども書式で解決できるでしょう。 必要なら、1(yes)の個数の計算などもSUMをつかって集計できます。 また、出席者数:=COUNTIF(B2:B4,1)    欠席者数:=COUNTIF(B2:B4,0) なども簡単に計算できます。

minatomo
質問者

お礼

完璧です。これって、範囲指定してからその範囲をユーザ設定で[=2]"○";するんですよね。つまり、一つのセルだけ「ユーザ設定で[=2]"○";」してから広範囲にオートフィルしてもできないんですね。 あと、「[=2]"○";」の意味は「そのセルが、2だったら○だぞ!!」っていう命令だっていうことは何となくわかったんですけれど、「そのセルが1」だったとき、なぜ空欄になるのですか?これについてはただの好奇心なのでnishi6さんがお暇なとき教えてください。 

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

D1に=IF(AND(B1=1,C1=1),"○","") E1に=IF(B1=C1,"","○") と式を入れれば良いようです。 エクセルにAND、OR関数があり、XOR関数(ExculusiveOR)がないので,上記回答は問題を孕んでいます(ORを使うと 良いように一瞬思うが、出席-出席もTRUEになってしまうのでだめ)。 B,C列にあたるものが増えると面倒ですね。 欠-欠にあたるものはどうしますか。

minatomo
質問者

お礼

D1に=IF(AND(B1=1,C1=1),"○","") で問題解決すっきりです!なるほどOR関数だと「どちらかが1(出席)だとTRUEの意味」だから、両方1の場合でもTRUEにしてしまうということですね?(解釈間違っていたら教えてください) とても勉強になりました。ありがとうございました。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.5

A列 名前 B列 入力欄1、出席=1、欠席は空欄または0にする C列 入力欄2.B列と同様。 D列 出欠表示1.B列の値から自動的に表示する。 E列 出欠表示2.C列の値から自動的に表示する。 F列 「(1)(2)とも出席」表示 G列 「どちらか出席」表示 とするのはどうでしょう。

  • nyhk
  • ベストアンサー率29% (38/127)
回答No.4

すみません、ちょっと解釈が違ったようです。 D列も必要なのですね。 でもやっぱり1と欠ではわかりづらいです。 他人にみやすくというのであればやはり出席のところだけ○を入れるのがわかりやすいと思うのですが・・・。

minatomo
質問者

補足

説明不足ですみません。最初は出席1or欠席0の入力でやっていました。これは便宜上でして、テンキー入力しやすいというのと、後々計算しやすいと思いそうしました。○×入力はすこし時間がかかるので…。実は、項目はこれだけではなくほかにも1or0入力があるんです(たとえば出席して食事をしたかしないか→1or0、なにか購入したかしないか→1or0などなど…)。その後人に見せなくてはならなくなり、全部1or0表記じゃパッと見わかりにくいので欠席者を「欠」としようと思いました。そのためこんなことになってしまったので、お知恵をお借りしようかと…。難しいですよね…。

関連するQ&A