• ベストアンサー

エクセル男女で色塗り分け

マクロとは、名前しか聞いたことなく、全くわかりません。 が、幾つか行いたい作業があり、効率よく、自動的に行いたいので、良い方法があったら教えてください。 ヘルプで見ても、マクロのことがよくわかりません。 マクロの実行とか編集とか?? どうしたら下のことが簡単にできますか? 1.列に男・女とある表で、男の行だけ青で塗りつぶ  したい。 2.ある列に●が入力されている行には別の列に   「スイカ」という言葉を入れる。 3.数字が入力されているある列の数値が160以上  は赤色表示にしたい。  よろしくお願いします。

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

  • ベストアンサー
  • daiku164
  • ベストアンサー率34% (151/437)
回答No.9

印刷専用シートを作られては? 先ほどのシートをSheet1として、印刷専用をSheet2にするのはどうでしょうか、 まず、左下のSheet1のタブの上で右クリック→移動又はコピー→ 下のコピーを作成するにチェックを入れOKを押す 同じシートが出来ますので、不要項目を消します、 で結果が欲しいところに(先ほどのG6の場合)↓を貼り付けます、 =IF(Sheet1!D6="●",2,IF(Sheet1!E6="●",1,IF(Sheet1!F6="●",0,""))) ポイントは、 コピーを作ったら、関数は一回消しましょう 結果はSheet1!のG6から直接写さない事かな? 直接 =Sheet1!G6 とすると空白の場合「0」が出てしまいます、 その他名前とか日付は直接でも良いです、

3743sada
質問者

お礼

さすが!すごいです。全く思いつかなかったです。 よ~し、作ってみます。 顔も見えないネットで、こんなにも他人のために親切にアドバイスしてくださる人がいるなんて、本当に嬉しいです。 何度もありがとうございました。

その他の回答 (12)

noname#9284
noname#9284
回答No.13

もう一つご質問があったことを忘れていました。 > プリントアウトするときは●印のあった列は印刷したくないのです。 この表の場合、D:F列とH:J列を隠したいという事で宜しかったでしょうか? 1.印刷前にCtrlキーを押しながらD:F列とH:J列を選択します。   やり方は列のセレクタ(上のA、B、Cと書いてある灰色の部分です)をCtrlを押しながらドラッグするだけです。 2.列のセレクタの上で右クリックし、コンテキストメニューから「表示しない」を選びます。 3.D:F列とH:J列が非表示になって表の幅が狭まります。 4.元に戻すには、Ctrlを押さなくてもいいのでC:M列を選択し、列のセレクタの上で右クリックし「再表示」を選んでください。 5.再表示のやり方は他にもありますが、これが一番安全でしょう。 ご希望が沢山ですのでそれぞれ書かせていただきました。数式に関しては他にも色々な数式でご希望を満たすことができます。 おわかりになりにくい点がありましたら補足をお願いいたします。

3743sada
質問者

お礼

hirorin2004さん、何度もご丁寧に、しかもとっても詳しく確実に教えてくださり、感謝の気持ちで一杯です。こんなにお礼が遅くなってしまい、申し訳ございません。数式とにらめっこして徹夜で何日もやっていたものですので、体調を崩し、お礼遅くなってしまいました。 おかげさまで、現時点で望むことはできました! ただ、数式の意味、理論がわかっていないので、またお聞きすることがあると思います。 そのときは、是非またよろしくお願い致します。 本当にありがとうございました。

noname#9284
noname#9284
回答No.12

ちょっとミスタイプです。 > 1.列に男・女とある表で、男の行だけ青で塗りつぶ  したい。 6.数式がに「=$C2="女"」と入力します。ここでもアクティブ行とC1の行番号が同じ事が重要です。 6.数式がに「=$C2="女"」と入力します。ここでもアクティブ行とC「2」の行番号が同じ事が重要です。 また、コンテキストメニューはショートカットメニューとも言います。 常に「その時点で何ができるか」がメニューに載っていますので、このメニューは状況に応じて変わってきます。 もしお時間があればスペースアルクで「context」で検索してみてください。 http://www.alc.co.jp/index.html

参考URL:
http://www.alc.co.jp/index.html
noname#9284
noname#9284
回答No.11

私のやり方で書かせてくださいね。 > 1.列に男・女とある表で、男の行だけ青で塗りつぶ  したい。 表はA1:S31まであり、1行目が見出しだとして、 1.A2:S31を選択する。 2.最上の行が2行目で、2行目のどこかがアクティブになっている(つまりそこだけ白くなっている)ことを確認する。これは重要です。 3.仮に2行目のどこかがアクティブになっていると仮定して、書式メニュー→条件付き書式で、数式がに「=$C2="男"」と入力します。先ほど2行目がアクティブだったのでC2です。3行目がアクティブならC3にしておいてください。 3.書式ボタンを押します。 4.パターンタブの「セルの網掛け」でパターンの色を指定してOKボタンを押すと、条件付き書式の最初の画面に戻ります。 5.下の「追加>>」ボタンを押します。 6.数式がに「=$C2="女"」と入力します。ここでもアクティブ行とC1の行番号が同じ事が重要です。 7.パターンタブの「セルの網掛け」でパターンの色を指定してOKボタンを押すと、条件付き書式の最初の画面に戻ります。 8.OKボタンを押しますと、男女によって行が塗り分けられます。 9.もし2行目だけ選択してこの条件付き書式を設定したのであれば、A2:S2まで選択しておいて、ツールバーの黄色いブラシのアイコン(書式のコピー/貼り付けボタン)をクリックし、A3:S31をドラッグして選択してください。2行目の書式が下の行にもコピーされます。 また、表は他にもあると思いますので、この2行目の書式を他の表に同じように書式コピーしてください。実はコピー元の行は3行目でも4行目でもかまわないんですが。 > 2.ある列に●が入力されている行には別の列に   「スイカ」という言葉を入れる。 1.G2:G31を選択して、画面上の数式バーに「=IF(COUNTIF(D2:F2,"●"),MATCH("●",D2:F2,0)-1,"")」と入力し、Ctrlキーを押しながらEnterキーを押します。下まで一気に数式が入ります。 2.もし、G2だけ選択して数式を入れ、Enterキーを押しただけでしたら、G2の数式を下までコピーしてやる必要があります。 3.この場合、G2のセルの右下をポイントすると(カーソルを滑らせてセルの右下あたりに持ってくるという意味で、クリックするわけではありません)、カーソルの形が + になります。この状態で下までドラッグしてボタンを離すと、セルが下までコピーされます。 4.K列にも貼り付けるのなら、G2:G31を選択して右クリックし、コンテキストメニューから「コピー」を選びます。 5.K2を右クリックしてコンテキストメニューから「貼り付け」を選びます。 6.他の表にコピーする場合は、G2だけをコピーし、 他の表のG2にあたるセルとK2に当たるセルに貼り付け、先ほどの容量で表の下までドラッグコピーしてください。 > 3.数字が入力されているある列の数値が160以上  は赤色表示にしたい。 1.この表の中の「ある列」の「文字色」を160以上なら「ある列」の文字色を赤色にしたい、とのご希望と仮定します。 2.「ある列」をS列だと仮定します。 3.S2:S31を範囲指定して、書式メニュー→条件付き書式で、先ほどの条件が設定されているはずですので、「追加>>」ボタンを押し、「セルの値が」「次の値以上」「160」にし、「書式」ボタンを押してフォントタブで色を赤にしてOK、OK。 4.他の表にS2の書式をコピーします。 5.万が一この方法で文字色が変化しませんでしたら補足をお願いいたします。

  • sero
  • ベストアンサー率47% (916/1944)
回答No.10

#6の補足です。 IF関数の基本は =IF(A=2,B,C) 「Aが2であればB、でなければC」です。 IF関数でネストすると左の条件から順に処理します。 =IF(A=2,B,IF(A=1,C,IF(A=0,D,E))) 「Aが2であればB、でなくてA=1であればC、でなくてA=0であればD、 前述のどれにも該当しなければE」となります。 #6の式であれば、 =IF(D2="●",2,IF(E2="●",1,IF(F2="●",0,""))) ですので、 D2に●が記述されていれば、例えE2、F2にも●があっても 返ってくる値はD2="●"の条件を満たしている「2」となります。 印刷に関しては#9の方の仰る通り、印刷用のシートが簡単で良いでしょう。 ただ、今後データが増えていく事が判っているなら、追加の度に いちいち関数式をコピーせずに済むよう工夫したほうが良いですね。 下記は一例です sheet1の入力表は =IF(D2="●","2",IF(E2="●","1",IF(F2="●","0",""))) とし、判定結果を数字ではなく文字列で返すようにする。 印刷用のsheet2へ移動し、A1セルに =Sheet1!A1 と入力して、今後増える予定のセルまで(例えばS1000セルまで) 数式をコピー。 このままではsheet1で空欄になっているセルが「0」と表示されるので 「ツール」→「オプション」→「表示」タブで「ゼロ値(Z)」のチェックを外してOK。 あとは判定用に●を入力している列を削除。

3743sada
質問者

お礼

遅くなりましたが、ご丁寧に嬉しかったです。 世の中には頭のいい人がいるもんだな、と感心してしまいます。 seroさん、どうもありがとうございました。

  • daiku164
  • ベストアンサー率34% (151/437)
回答No.8

質問事項とまったくかけ離れてしまい申し訳ありませんが、 コツ・・・・他の方が作った関数や、教えて!gooの質問や回答など見ていると、 知らない関数や技など分かって楽しいから、とか、 前にも見積もり請求書を作った時の、苦労から覚えた事もあります、 まったく知らなかった時は、セルの関数を1セルごとに書き換えていました、 1セル内5箇所書き換えで、横に5セル縦に20項目で30シート分 5X5X20X30・・・15000 セル番地を書き換えた事があります、(笑) それも、間違えに気がつくたびで・・・ 途中から気が付いたら、今までの苦労はなんなんだと思いました。 気になる、質問や回答は必ずチェックしましょう

3743sada
質問者

お礼

う~ん。なるほど。千里の道も一歩からですね。 自分は関数や計算式に関しては全くのド素人です。 これからも勉強していきたいと思います。 あろがとうございました。

  • daiku164
  • ベストアンサー率34% (151/437)
回答No.7

>D列に『異常あり』E列に『観察』F列に『異常なし』と・・・・ 始まりが 6行目からとして G6に入る式は、 =IF(D6="●",2,IF(E6="●",1,IF(F6="●",0,""))) G6以降へのコピーは、 G6をクリックした状態でマウスを、枠内の右下に持って行くと +のマークが出ます、マークが出た状態で下にドラックすると 7・8・9・・「必要段まで」とコピーされます、 式も変わっていきますから楽ですよ、 =IF(D7="●",2,IF(E7="●",1,IF(F7="●",0,"")))

3743sada
質問者

お礼

すごい!本当におっしゃるとおりできましたよぉ。 コピーもあっという間。簡単です! すばらしいです。 こんな式作ったことないので、どうして思いつくのか感心してしまいます。 あのぅ・・・何か、法則というか、約束事さえ覚えれば、こういった式が作れる訳なんですか?最後は必ず"")にするとか? コツを教えていただけませんか。

3743sada
質問者

補足

G列に数式を入れた後で気付いたのですが、似たような項目がH列以降にもあります。歯垢の状態でH列に『付着なし』I列に『若干付着』J列に『相当付着』がさっきと同様に各行に●で印があります。歯垢の状態をK列に教えていただいた数式を当てはめ『0、1、2』を入れました。L列に歯肉の状態『異常なし』M列に『要観察』N列に『要診断』が●で印O列に教えていただいた数式を当てはめ、『0、1、2』が入りました。そこで、質問なんですが、プリントアウトするときは●印のあった列は印刷したくないのです。 列を削除したら数式入れた列のセルが#REF!になってしまいました。せっかく式を入れたのに・・・何か良い方法はありますが?わかりにくくて大変すみません。

  • sero
  • ベストアンサー率47% (916/1944)
回答No.6

分岐条件が少ないのでIF関数のネストで可能です。 =IF(D2="異常あり",2,IF(E2="観察",1,IF(F2="異常なし",0,""))) 但し、同じ行で複数入力があった場合はD>E>Fの順に優先されます。

3743sada
質問者

お礼

何度もありがとうございました。教えていただいた数式ではできず、"異常あり""観察""異常なし"を●に置き換えたらできました。ご丁寧に何度もありがとうございました。 >同じ行で複数入力があった場合はD>E>Fの順に優先されます。 とは、数式で左になるものから優先されると言うことでしょうか? 最後に教えてください。お願いします。

  • sero
  • ベストアンサー率47% (916/1944)
回答No.5

#2です。 C列に性別の入力があるなら、例えばD2セルに条件付書式の「数式で」で =$C2="男" として書式を設定してOK。 D2セルを選択している状態でCtrl+C 塗りつぶしたい範囲(A1~S30セル?)を選択して「編集」→ 「形式を選択して貼り付け」→「書式(T)」でOK 上記手順で性別が男のセルの塗りつぶしは可能 ●がD列にあるとし「スイカ」と表示させるのは、表示させたい列に =IF(D2="●","スイカ","")です。 参照セルは適宜読み替えて下さい。

3743sada
質問者

補足

seroさんありがとうございます。 すごいです!!●スイカできました! では、こういうのは? D列に『異常あり』E列に『観察』F列に『異常なし』とそれぞれの行に該当者が『●』印が入力されいている表でG列に『異常あり』は『2』、『観察』は『1』『異常なし』は0を入れる数式を教えていただきたいのですが。 面倒なことをすみません。よろしくお願いします。

noname#7095
noname#7095
回答No.4

#3です。 1行目には項目があるとして、2行目から設定するとします。 条件付書式を設定したい範囲をすべて選択します。 書式→条件付書式と開きます。 「条件1」で「数式が」「=$C2="男"」の場合で書式を設定します。 Excel2000と2002で確認しました。多分ほかのバージョンでも一緒です。

3743sada
質問者

お礼

できました!できましたよ~!! と~っても嬉しいです。 本当にありがとうございました。 感激です。

noname#7095
noname#7095
回答No.3

#1です。 条件付書式を行全体に設定なさる場合はその行全体を選択した状態で設定しなおすか、範囲を選択してから設定するか、書式をコピーして張り付けるかをしてみてください。 もうすでにひとつ設定なさってますから、コピーして張り付けるのがラクかな。 設定されたセルを選択し、右クリックからコピーを選択します。 書式を貼り付けたいセル範囲を選択し、右クリック→形式を選択して貼り付け→書式でOKかと。

3743sada
質問者

お礼

お返事待ってました!嬉しいです。ありがとうございます。 でも、おっしゃるとおりにしてみてもできません。 私の説明がたりなかったのかも。 A列に通し番号、B列に男女混合の氏名、C列に性別(男Or女)、S列までデータが入ってる表をC列の「男」を頼りに表内の行A列からS列迄を簡単に塗りつぶしたいのです。 表は30人くらいの表が24あります。 お願いします。

関連するQ&A