• 締切済み

ExcelのIF関数を使って

学校の成績一覧表を作っています。成績は◎、○、△の3段階でつけます。 一覧表の中に、◎と△だけをつければ、残りの空白セルには、マクロで○が入るようにしてあります。 Excelのバージョンは2003です。 しかし、クラスによって人数が違うので、自動的に○が入るようにしてあっても、どこまで入れたらいいのかは変わってきます。 そこで、氏名を入れるセルを参照し、「もし、このセルが空白だったら、その下のセルはすべて空白になる」というような関数を入れておけばいいのかなと考えました。が、その関数がわかりません。 どなたか、教えてもらえませんでしょうか?           C1  D1  E1  F1  G1・・・・・            伊   佐  鈴  山           藤   藤  木  田   B2   読む力    ○  ◎  △  ◎    B3   書く力     ◎  ○  ○  △ 分かりにくいでしょうが、上のような感じで作ってます。 上の場合、G1セルに名前が入っていないので、G2セルから下は、マクロでは○が入りますが、関数によって空白にしたいのです。 よろしくお願いします。

みんなの回答

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.10

>何度もありがとうございます。自分もそう思って、やってみたのですが、うまくいかなくて、 >それで、上に補足を入れさせてもらったんです。 >どうすればいいのかなと思ってます。ありがとうございます。 空白の判定でうまくいかない場合、セル参照での未入力セルの値が空白ではなく0と判定されていると思われるので、空白と0の判定をORでつないで条件とすればいいと思われます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.9

「書いていただいたものをマクロのところに貼り付けましたが、どこにも○は出ませんでした」 貼り付けただけでは、○はでないよ。 ちゃんと実行しなければね。 なお、回答したコードはちゃんと動きます。○が出ないはずがないが、 もし、出ないとすればあなたのやり方が悪いか、そのExcelは壊れている。あきらめなさい。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.8

>書いていただいたものをマクロのところに貼り付けましたが、どこにも○は出ませんでした。 どこにも出なかった、ですか。 確認ですが、コードは標準モジュールに貼り付けていますか? シートモジュールに貼り付けているということはありませんか? その場合、貼り付けたシートのみで動作し、別のシートだと動作しません。 「マクロの記録」を使ったのであれば普通は自動的に標準モジュールが追加されるので、その可能性は少ないかとは思いますが…

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.7

No.5です。 私やNo.4さんが書いたコードを実際に動かしてみたのですよね? それがどういう結果になったかを書いていただけないでしょうか。 例えば ・想定している範囲の外まで○が入力されてしまった ・1行目に名前が入っていない列にも○が入力されてしまった ・どこにも○が入力されなかった など、もっと具体的に。 ただ「うまくいかなかった」だけでは原因は特定できないです。

nishikyo
質問者

補足

すいませんでした。 書いていただいたものをマクロのところに貼り付けましたが、どこにも○は出ませんでした。貼り付け方がおかしかったのかもしれませんが・・・。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.6

#4です。 数式が入っているが、空白に見えるということなら、 次ではどうでしょうね。 Sub Macro1() c = 0 While Range("C1").Offset(0, c) <> "" c = c + 1 Wend r = 0 While Range("B2").Offset(r, 0) <> "" r = r + 1 Wend Range("C2").Resize(r, c).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "○" End Sub

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.5

名前が入っているセルは、見かけ上空白でもブランクセルではない可能性があるということですよね? 以下のようなマクロでどうでしょうか。 Sub マクロ() Dim MaxRow As Long Dim MaxCol As Long Dim r As Range MaxRow = 2 MaxCol = 3 Do Until Cells(1, MaxCol + 1) = "" MaxCol = MaxCol + 1 Loop Do Until Cells(MaxRow + 1, 2) = "" MaxRow = MaxRow + 1 Loop For Each r In Range(Cells(2, 3), Cells(MaxRow, MaxCol)) If r.Value = "" Then r.Value = "○" End If Next r End Sub

nishikyo
質問者

お礼

さっそくのご回答、ありがとうございます。 試してみたのですが、うまくいきませんでした・・・。 自分のやり方がおかしいんでしょうか? せっかく作っていただいたのに、申し訳ないです・・・。 でも、大変、感謝しております。ありがとうございました。

nishikyo
質問者

補足

みなさん、ご回答をいただき、ありがとうございます。 自分もマクロを勉強し始めたばかりなので、分かっていないところばかりなのですが・・・。 質問のところに書いたマクロですが、一覧表の中に、まずは◎と△だけを全部入れてしまいます。次に「新しいマクロの記録」にして、記録を始めたら、「編集」⇒「ジャンプ」⇒「セル選択」⇒「空白セル」で○を入れ、「Ctrl」キーを押しながら確定して、記録を終了しました。 一覧表は40名分作ってありますが、クラスによって人数はまちまちなので、氏名の欄に名前が入っていなかったらその下のセルはすべて空白としたいのです。 IF関数で、「もし、氏名を入れるセルが空白なら空白、氏名を入れるセルに名前が入っていたら、空白セルだけを選択して、一斉に○を入れる」というマクロを組みたいのです。 口で言うのは簡単ですが、それが難しくって・・・。 どなたか、お知恵を拝借できませんでしょうか? 質問文の説明がわかりにくくて申し訳ありませんでした。 もう一度、よろしくお願いします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

"○"を入れるマクロを次のようにでもする。 Sub Macro1() c = Range("C1").End(xlToRight).Column - 2 '2は、C2の列番号-1です r = Range("B2").End(xlDown).Row - 1  '1は、C2の行番号-1です Range("C2").Resize(r, c).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "○" End Sub

nishikyo
質問者

お礼

ご回答、ありがとうございます。 さっそく入れてみたのですが、うまくいきませんでした・・・。 せっかく作っていただいたのに申し訳ないです・・・。 でも、感謝しております。ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

C列から右横の列を選択します。 「ホーム」タブの「条件付き書式」で「新しいルール」から「数式を使用して…」して数式の窓には =C$1="" と入力します。 同じ画面の「書式」をクリックして「表示形式」のタブで「ユーザー定義」を選択します。 「種類」の窓には ;;; を入力してOKします。 これで名前が無いセルには何の表示もなくなるでしょう。

nishikyo
質問者

お礼

ご回答、ありがとうございます。 ですが・・・。 すいません、「ホーム」タブの意味が分かりません・・・。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.2

>空白セルとは違うのですが・・・。こんな場合は、どんな関数にしたらいいのでしょうか??? 数式の結果としてセルの値は空白になるのだから違いはないのでは?

nishikyo
質問者

お礼

何度もありがとうございます。自分もそう思って、やってみたのですが、うまくいかなくて、それで、上に補足を入れさせてもらったんです。 どうすればいいのかなと思ってます。ありがとうございます。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.1

空白セルに自動で○を入れるマクロ処理があるのでは、関数によって空白にしたセルもマクロ処理で○になってしまうでしょう したがって、空白セルに自動で○を入れるマクロ処理を変更して、氏名のセルに名前が入っている場合のみ空白セルに自動で○を入れるようにマクロ処理を変更すればいいです

nishikyo
質問者

お礼

さっそくのご回答ありがとうございます。 なるほど、そうなんですね・・・。 マクロ自体を書き換えないといけないんですね。

nishikyo
質問者

補足

すいません、氏名を入れるセルには、数式が入っていますので、(別のシートに、氏名を入力する欄を作ってあり、その氏名が成績一覧表の氏名を入れるセルに飛ぶようにしてあるんです。)空白セルとは違うのですが・・・。こんな場合は、どんな関数にしたらいいのでしょうか???教えていただければありがたいです。よろしくお願いします。

関連するQ&A

  • VLOOKUPの使い方

    sheet1に社員IDと氏名一覧を入れておき sheet2のA列にIDを打ち込む(行1~4は何番のIDが入るかはわからない)とB列に氏名が出るようにする為には どうすればいいのでしょうか? 例   sheet1             sheet2         A     B          A     B     1 社員ID  名 前     1  002  伊 藤     2   001  佐 藤  ⇒  2  003  武 藤     3   002  伊 藤     3  001  佐 藤     4   003  武 藤     4  003  武 藤 又、違うbookに保存している一覧からでも可能ですか? それか、何か違う関数がありますか? 初心者のためよろしくお願いします。              

  • エクセルの IF関数、VLOOKUP関数について

    エクセルなんですが、2007を使用しています。OSはビスタです。 IF関数とVLOOKUP関数を使って表を作成したいのですが、なかなか出来ません。。。そこで皆さんのお力をお借りできればと・・・ 特に IF VLOOKUP にこだわる事はないので教えていただけると助かります。 <シート1>       A       B       C     1   日本or東海 2 3   愛知       a 4   岐阜       b 5 データ              日本     東海 7   愛知       a       A 8   岐阜       b       B 9   三重       c       C A1セルに『日本』と入れてもA2のセルは空白なのでB2のセルは空白のまま、 同様にA3のセルには『愛知』と入れたのでデータの日本の下のB7のデータ の『a』を反映させたいんです。 これがA1セルに『東海』と入れた場合は自動的にB3セルは『A』のでーたが 反映されるようにしたいんです。 ちなみにA1セル及びA2~A5はリスト設定をしてあるので、リストから選んだら 自動的に反映させるようB2~B5セルに入れる関数を教えて下さい。 皆さんのお知恵をお借りできれば助かります。よろしくお願いします。

  • VLOOKUP関数とIF関数の組み合わせ

    はじめまして。 質問なのですが、セルに列とサイズを入力して用紙寸法一覧表を参考にして「大きさ」をセルに寸法を表示させる問題に困っています。 ヒントにはIF関数を使うと書かれています。 どなたかお願いできますでしょうか?  A   B   D 2 列   __(下の表から自分で入力) 3 サイズ __ 5 大きさ □ × □ ●用紙寸法一覧表(単位:ミリ)   F    G    H     I     J 2 サイズ  A列       B列 3  0  841  1189 1030 1456 4  1  594  841  728   1030 5  2   420   594   515   728 6  3   297   420   364   515 7  4   210   297   257  364 8  5  148   210   182   257 9  6  105   148   128   182 10  7   74    105   91   128 11  8   52    74    64   91 12  9    37   52   45    64 13  10   26   37   32   45 きちんと説明できているかわかりませんがよろしくお願いします。

  • エクセルのIF関数の使い方について

     こんにちわ。仕事で成績の評価表の作成をしたくて、エクセルで表を作成しました。    表は、  Aのセル・・・氏名 Bのセル・・・テストの点数 Cのセルが平常点          Dのセル・・・BとCのセルを合計した合計点数          Eのセル・・・成績評価  Fのセル・・・合計点数による順位    という表を作成しました。    Eのセルに Dのセルの合計点数を基準として 5段階の評価をつけたい。    条件が、 85点以上が5、60点以上が4、50点以上が3、35以上が2、1~34点までが1    =IF の関数 =IF(論理式、真の場合、偽の場合) というのを使用すればいいのは   わかったんですが、いまいち関数式の取り方、書き方がわからなくて・・・本をみて記入して   みたんですがエラーになります。   どうしたら評価を自動転記することができるか、教えてください。   また点数をもとに順位をつける方法も教えて欲しいです。よろしくお願いします。

  • Excel IF関数とAVERAGE関数

    定期考査の成績をExcelで作ってみようと思うのですが、関数の打ち方を忘れてしまいました。 IF関数を使い、点数の所がどこも記入されていなかった場合空白にして、一つでも入っていたらその平均を出そうと思っているのですが、出来ますよね? 平均を出したいところは、下の写真の範囲指定してあるところなのですが、覚えている感じで関数を入力すると、「VALUE」と出てしまいます。 関数は =IF(B3:J3="","",AVERAGE(B3:J3)) にしていますが、関数のせいならば、正しい関数を教えて下さい。 お願いします。

  • Excelの関数(IF関数?)

    始めまして。 関数が苦手なのですが、仕事で至急表を作成しなければならなくなって しまい困っています。作成したいエクセルの表は下記の通りです。 受注日の管理で関数を使って出荷日の自動計算をしたいと思っています。 例えば2009/1/15のPMまでに受注したものに関しては当日出荷で After5以降での受注は翌日出荷扱いでエクセルの表に表示したいのです。 今現在、 セルA1に日付(2009/1/15 )   B1に時刻(AM、PM、After5で区分)←ラジオボタンで選択出 となっています。 これから関数を組んで自動的に A2でAM、PMを選んだ場合、 セルC1の日付(2009/1/15) D1ではセルB1と同じものを表示(AMもしくはPM) セルB1でAfter5を選んだ場合のみ C1の日付は翌日扱い(土、日、祝日を除く)で D1の時間区分は空白にしたいと思っています。 どんな関数を組めば良いでしょうか? 分かりづらい説明で申し訳ございませんが、お知恵をお貸し頂けたら 幸いです。 宜しくお願い致します。

  • IF関数についておしえてください。

    お世話になります。 作成している表の中で、利用しようとおもっている関数について教えてください。 A1セルに下記のようなIF関数を作成しました。 =IF(AND(B2>=1,C2<=0),"○",IF(AND(C2>=1,B2<=0),"○",IF(AND(B2>=1,C2>=1),"○",IF(AND(B2<=1,C2<=1),"")))) B2セルは別シートからVLOOKUPを利用して検索してきて、数字を表示させているセルのため、 該当しない場合”#N/A”と 表示されるところがありました。それで、”=IF(ISERROR”を利用して、#N/Aと表示される場合、空白で表示される数式にしたところ、今度はA1セルが条件にあっていないのに”○”と表示されるようになりました。≪”B2=空白(”#N/A”),C2<=1の場合にあたるのだと思います。≫ *B2セルを”空白”ではなく”0”で表示させるようにしても同様に”○”となりました。 A1セルに、  B2>=1,C2<=0の場合”○”  C2>=1,B2<=0の場合”○”  B2>=1,C2>=1の場合”○”  B2<=1,C2<=1の場合"空白" で表示できる方法をご存じの方、ご教示お願いいたします。 簡単なことなのかもしれませんが、エクセル関数初心者のため、大変困っております。 うまく、不明な点を説明できていませんでしたら、申し訳ございません。何卒 よろしくお願いいたします。

  • エクセルでのIF関数:この場合どうすれば?

    IF関数を使うと思うのですが、このような場合どのように入力すればよろしいのでしょうか? 特定のセル(たとえばC1のセル)にマイナスの数字もしくは、プラスの数字もしくは空白が入力されており、たとえばB1のセルに関数を入力するとき C1に空白以外の数値が入力されている場合に限り、A1に入力されている数値をB1のセルに入力(反映)させたい場合。 また同時に、C1が空白の場合、B1も0ではなく空白にしたい。 どなたかご教授ください。よろしくお願い致します。

  • IF関数について

    EXCELのIF関数について教えて下さい。 A列 B列  C列 D列 ○     ○  ○    ○  ×  × ×     ○  × AもしくはB列が○で、C列が○ならD列は○ AもしくはB列が×で、C列が○ならD列は× AもしくはB列が×で、C列が×ならD列は× AもしくはB列が空白で、C列が空白ならD列は空白 と言った条件式をD列のセルに記述しようと思っています。 試行錯誤してみたんですが、上手くいきません。 アドバイスでも構いませんので、教えて下さい。

  • Excelの関数『IF』にて・・・

    EXCELにて、関数IFを使って一覧表から 自動入力をしたいと考えています。 例えば、以下のようにしてセル『C1』の数字に 応じて、自動を試みたい時 =IF($C$1>80,"=A1",IF($C$1>70,"=B1","=C1")) =A1,=B1,=C1 の場所を文字列としてしか読み取ってくれません =A1,=B1,=C1では無く=A1,=B1,=C1のセルに入力されてる 数式(他のセルの値)を、表示したいんですが どのようにすれば可能でしょうか? 何度やっても「=A1」と、そのまま文字列として出て来ちゃいます。

専門家に質問してみよう