• ベストアンサー

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

 氏名 出欠(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% (7418/18948)
回答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/17068)
回答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

  • Excel の表

    同窓会の幹事をしています。 シート1に名簿を作成しています、A列からG列まであり、B列には氏名を記入しています、G列には出欠(○、×)を記入するようにしています。 そこで質問です シート2に B列には出席者の氏名、C列には欠席者の氏名、D列には出欠の返事がまだ来ていない氏名 が表示されるようにしたいのです。 返信のはがきが届き次第シート1に ○、×を記入するとそれがシート2に反映され、常に 出、欠、未 の氏名が表示されるように出来る方法は有りますか? もしありましたら教えてください。 Excel 2002 です

  • エクセルの集計方法

    エクセルの質問です。 講習会の参加者名簿を作成しているのですが、 A列に参加者の社名、B列に参加者氏名、C列に出席だったら○を入力しています。 出席○のお客様の内訳を、 同じ会社は1軒として、何軒の何名と出したいのですが、 どうすればいいのでしょうか? ピボットテーブルではなく、関数で出せませんか?

  • エクセルでの出欠簿

    A列に出欠(○・×)B列に会社名・C列に出席人数・D列に出席者名となっています。このデータでA列に○の入っている会社名と出席者名を他のシートの出席者名簿に転記したいのですが、いい方法はありませんか?教えてください。 このデータの会社名は他のBookの案内状送付リストからリンクされています。

  • エクセル配列数式について

    A列(A3:A42)に氏名 B列(B3:B42)に性別 C列(C3:C42)に第1回テスト成績 D列(D3:D42)に第2回テスト成績 が入力してあります。 性別が"男" かつ 第1回テスト成績が350以上 かつ 第2回テスト成績が350以上 の条件を満たす配列数式を {=COUNT(IF((B3:B42="男")*(C3:C42>=350)*(D3:D42>=350),B3:B42,""))} だと正しい回答がでません IFの真の場合の欄をC3:C42またはD3:D42にすると正しい値がでます なぜC3:C42だとだめなのでしょうか?

  • エクセルでの出欠・成績管理がしたい。

    エクセルでの出欠・成績管理がしたい。 PCのリテラシが低いので、回答を戴いても操作方法が解からない可能性がありますが、よろしくお願いします。 1.A列に氏名があります。昇順化しました。B列には出席者の学籍番号があります。これも昇順化しました。現在は、B列の出席者の番号を目で見ながら、A列の番号に照会し、出欠マークを付けています。500名の処理なので苦労しています。もっと簡単に済ます方法は無いでしょうか? 2.また、これから成績表を作成する予定です。学籍番号は10桁なので、これを前方5桁あるいは後方5桁だけを入力し、これを例えばC列に置きます。そしてこの5桁の学籍番号の後ろ(例えばD列)に成績を記入します。このC&Dをセットとし、先ほどのB列の学籍番号との一致度を自動的に処理し、B列の後ろにC&Dが並ぶといった処理は出来るものでしょうか?

  • エクセルの使い方

    やりたい事 1.A、B、Cの列を作ります 2.Aの列に1~30の数値を入力します。この数値は利用番号となります。 3.Bの列に初利用者の氏名を入力します 4.2回目以降の利用者は、Bの列にAの列の利用者番号を入力すれば、Cの列に 氏名が表示される 質問 1.このような仕組みをエクセルで作るにはどんな、数式、関数をどのように作れば良いのでしょうか? 2.もっと良い他の仕組みがあれば教えて下さい お願い なるべく詳しく教えて下さい。 例の数式を教えて頂けると助かります。

  • エクセルのIF関数で複数の条件を指定する方法

    エクセルのIF関数で複数の条件を併記する記載方法がわかりません。 例えば、A列に苗字、B列に名前が入っている(どちらかが空白の場合もある)とします。 その場合に、苗字と名前両方が入力されている場合にのみC列に氏名を表示し、どちらかの条件が偽の時は何も表示しない関数を入れたいです。 具体的に以下のような関数を考えてみましたがこれはエラーになります =IF(ISBLANK(A1) | ISBLANK(B1),"",CONCATENATE(A1,B1)) "|"の辺りが違うようなので"||"とか"OR"とかやってみましたがうまくいきません。どう記述すればよいでしょうか。 ちなみに、IF文のなかに別のIF文をネストして同じ事をやる方法ならわかるのですがこれはなんとなく好きではありません。上記のような記載の仕方でできれば教えて欲しいです。

  • エクセルの集計方法

    エクセルで2つの条件に合致するものだけカウントしたいのですが、「countif」を二つ使うとエラーが出てしまいます。  具体的にいうと…   A列:氏名   B列:スーパーの種類(a,b,c,d,e)   C列:買うものの種類(A,B,C,D,E)  B列で「b」、C列で「D」に該当する人数を数えたい  …という場合の数式を知りたいのです。    オートフィルターだといちいち選ばなければならないので、数式で2列に該当するものだけカウントしたいと思っています。

  • 出欠者数を数えたいのですが?数式を教えてください!

    出欠者数を数えたいのですが?数式を教えてください! 招待状を送って出欠を纏めているのですが 下記の場合の数式を教えてください。 招待先   出欠 A群     ○ B群     ○ C群     ○ D群     × A群     × A群     ○ B群     × B群     ○ C群     ○ C群     × 出席者数(○が出席) A   10人 B   5人 C   6人 D   1人 と言うように○の人数を群別に抽出します。 宜しくお願いいたします。

  • エクセルでこんなジャンプ出来ますか

    Sheet2    A     B   C  D    E   F   G     H 3  no.   氏名     no.   氏名     no.   氏名 4 100001 山本A   102001        104001 伊藤F 5 100002        102002 佐藤D   104002  6 100003 鈴木B   102003        104003 中村G 7 100004 高橋C   102004 山田E   104004 :   :    :       :     :       :     : Sheet1    A     B    C   3  no.   氏名  回数   4 104003 中村G   3 5 100004 高橋C   5 6 102003 :   :    :    : Sheet2の表を基にSheet1のような表を作成したい。 Sheet2には約2万件の番号が登録されています。 Sheet1のA列のno.は番号順に入力されるわけではない。 Sheet1のA列にno.を入力するとSheet2より該当の氏名をB列に表示、 該当氏名が空白の場合は、Sheet2の該当セルにジャンプし、氏名入力後Sheet1のC列にジャンプして戻る。 また、Sheet2において例えば、B1に104001を入力するとH4にジャンプしEnterを押すとB1に戻り、100002を入力するとB5にジャンプ氏名入力後Enterを押しB1に戻る。・・・ということもしたいのですがマクロではなく関数で出来るでしょうか?

専門家に質問してみよう