関数かマクロで塗りつぶしと削除の処理をする方法を教えてください

このQ&Aのポイント
  • 関数を利用して、Excelのシートに休日を塗りつぶし、不要日を削除する方法を教えていただきたいです。
  • 以前に関数を利用して困っていたエクセルの処理について、教えていただけると助かります。
  • 具体的な処理の説明が難しいので、画像を添付します。お知恵をお貸しください。
回答を見る
  • ベストアンサー

関数かマクロを利用して塗りつぶしをかけたい

関数を利用して以下の処理をすることは可能でしょうか? ご存じの方がいましたらご教授お願いいたします。 もし関数が不可能でしたら、マクロの組み方を教えていただければ幸いです。 「1月」から「12月」までそれぞれのシートと「カレンダー」のシートがあります。 カレンダーのシートにはそれぞれの月の休日と不要日(2月であれば29・30・31)が入力されています。 1)sheet「カレンダー」の休日=月毎のシートの日付の列に塗りつぶしがかかる 2)sheet「カレンダー」の不要日=月毎のシートの不要日が削除または非表示になる うまく説明できないので、画像を添付させていただきます。 以前、エクセルの関数で困っていた時に、こちらの回答でとっても参考になったものがありました。 どうぞお知恵を貸してください。よろしくお願いいたします。 補足 sheet「2月」の日付行の下に作業行を作成して、「※」が表示されたら塗りつぶしがかかるように条件付書式を試してみましたが、作業行の関数がうまく作成できず処理できませんでした。 1)sheet「2月」セル「B3」に「=IF(B2=カレンダー!$L$2:$L$14,"※","")」 2)「B3」の式を「C3」から「AF3」までコピー この時、どうしても「G3」(つまりは「6日」の行)にしか「※」が表示されませんでした。 またこの場合に「不要日の削除」の処理は考えつきませんでした。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

条件付き書式だけで出来ますけど、計算式にひと工夫必要です。 「カレンダー!$L$2:$L$14」を「挿入」「名前」「定義」で「不要日」と名前をつける 条件付き書式の条件を 「数式」「=COUNTIF(不要日,B$2)>0」として塗りつぶしの設定をしてください。

kurey05
質問者

お礼

回答ありがとうございます。 1)sheet「カレンダー」の表にセルの名前を付ける。 4月の休日には「休日4月」不要日には「不要日4月」、他の月の休日と不要日にもそれぞれ同様に名前を付ける。 2)月毎のシート、例えば「2月」には2つの条件付書式を設定する。 (1)=COUNTIF(休日2月,B$2)>0 ⇒セルの塗りつぶし (2)=COUNTIF(不要日3月,B$2)>0 ⇒フォント:白・罫線:白・塗りつぶし:白 同様に他のシートにも名前を変更して条件付書式を設定しました。 それぞれのセル範囲に名前を付けることと、条件付書式の数式に「COUNTIF」を使うこと。 これだけでイメージ通りの処理が可能になりました。 本当にありがとうございます。

その他の回答 (1)

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.2

不要日は、条件付き書式で IF(DAY(DATE(2011,2,29))=29) という数式を入れて塗りつぶしを指定すれば大丈夫では? 30日、31日はそれぞれ29の所をその日付に直す 2011や2の部分をセルの値を参考にさせれば、月が変わった時でも同じ書式指定が有効になるかも。

kurey05
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • 関数ありますか

    Excelで出来ますか、作業カレンダーを作成しています、A1年月日を入れれば、A2~に日が自動で入りB2~に曜日が表示される、関数ありますか、なおC2~に休日が表示されれば最高です。

  • Excelの関数を教えてください

    初めまして。よろしくお願いします。 関数を使って、以下のようなデータを作成することができれば、 その関数を教えてください。 Sheet1には次のように入力されています   A       B 1 日付      金額 2 2010/1/1 500 3 2010/2/5  300 4 2010/1/23 10000 5 2010/2/1  200 ・ ・ ・ A列に日付、B列に金額が入力されていて、行は決まっていません。 これをSheet2に集計したいのですが、B2~B13に関数を使ってできますか? Sheet2   A     B 1 月    金額 2 1月 3 2月 4 3月 ・ ・ ・ 13 12月 14 合計 Excelがわからなくてこまっています。詳しい方、ぜひ教えてください。 よろしくお願いします。

  • エクセルで特定のセルをマクロで色づけする

    お世話になります。 出勤チェックを集計するためのファイルを作っています。 説明がわかりにくいかもしれず申し訳ありません。 添付画像のカレンダーシートから年月を選択。 集計シートの日付は、カレンダーシートから取得した年月日を リンク貼り付けし、表示形式を日付と曜日にしています。 例えば、2011年9月と選択した場合、 日付の1日のところは、(画像でセル番号が抜けましたが、B4です) =DATE(カレンダーシート!C4,カレンダーシート!C5,1) 曜日のところは、=B4 となっています。 この状態で、土日の休日は、集計シートの朝、帰りのセルを空欄にしたいのです。 (出勤日計算を、”朝”の数でcount関数で出しているため) 単純に、IF文で曜日が土日なら空欄にする方法は、 中に入っている数式が日付なので、できません。 何か良い方法をアドバイスいただければありがたいです。 なお、できるだけ、マクロやVBAなしで関数のみで実現できると助かります。 よろしくお願い申し上げます。

  • VLOOKUP関数でエラーの表示された行だけを削除するにはどうすればい

    VLOOKUP関数でエラーの表示された行だけを削除するにはどうすればいいでしょうか。 http://okwave.jp/qa/q5920035.html の質問にて作成したワークシートCがあります。 ワークシートCのA列はドラッグして日付を埋めたので、昇順で365日日付が並んでいます。(2005年1月1日~現在まで) B列~K列までは、ワークシートA(為替)、ワークシートB(株式)からVLOOKUPで引っ張ってきた数値が入っています。 ドラッグして日付を埋めたので、A列にはマーケットが開いてない土日も日付が入っていますが、その結果、土日の日付を参照した行には#N/Aというエラーが表示されている状態です。 (Ex, A3は2005/01/02という日付が入っていて、B3~K3は#N/Aというエラーが表示されている状態です。) この#N/Aが表示されている行を削除するにはどんなマクロを組めばいいのでしょうか。 #N/Aを判別するようなものにすればいいんだと思いましたが、その具体方法が分かりません。 マクロも初心者なので、出来るだけ具体的に教えて頂けると助かります。 宜しくお願いします。

  • エクセル関数 支出管理のやり方

    エクセルの関数について質問です。 支出に関する表を作成しているのですが 例えば シート1のA行に1か月分の日付を入れて、B行に預金額の流れを管理します。 シート2のA行に預金額、B行に個々の支払期限日、C行に残高を入れて管理をします。 支払期限日は毎月違うので、シート2のB行に入れた日付がシート1のA行の日付と同じ日付だった場合 シート1の同じ日付になる列に、シート2の同じ日付のC行の残高が自動入力されるようにしたいのですが いくら調べても、関数がわかりません。 分かる方が居たら教えてください。 お願いします。

  • エクセルの関数の質問です。

    初歩的な質問かもしれませんがよろしくお願いいたします。 エクセル2003です。 まず、A~Zまでのテーブルを行に作成して数値を登録します(例:Aが100、Bが200というように) それとは別に(別シートでも可)カレンダーを行に設定して、日付の横に数値(100~***)を入力した際にその横に100なら”A”、200なら”B”というよに表示させたいのですが、 IF関数で =IF(○○=100,"A",IF(○○=200,"B"・・・・・・・・ というように続けると数に限りがあり、Zまで設定できません。 判りにくい説明かもしれませんがよろしくお願いいたします。

  • エクセル関数 ランキングを使って・・・

    みなさま宜しくお願い致します。 集計作業中に躓いてしまいました。 ランキング表を作成(Sheet1)しているのですが、別シート(Sheet2)に同数で同じ順位が数名います。 Sheet2はあくまで作業シートでその他の情報も含まれているので、Sheet1に表示用を作成しました。 A列に順位(作業列)、B列に実際の順位、C列に名前という風に表示させたいのですが、Vlookupを使用すると次点が抽出されません。Vlookupにそのほかの関数を加えるのかまたは別の関数があるのでしょうか。宜しくお願い致します。 【内容】 Sheet2: A列に1行目~10行目まで実際の順位(同数は同順位)B列に名前。 Sheet1: A列には1行目~10行目まで1~10の数字を(作業列とし、最終的には非表示にしようかと)。 B列には関数式:=SMALL(Sheet2!$A$1:$A$10,Sheet1!A1)を入力し、10行目までオートフィルすると、同数同順位の数値を表示します。 ここからです。 この順位に該当する人をSheet2からVlookupで引っ掛けようにも、次点以降の名前が出てきません。 何か良い方法はありますでしょうか? みなさまのお知恵をください。 宜しくお願い致します。

  • エクセル関数の日付(長文です)

    セルに年月日で日付が入っています。 同じシートの別のセルにその最初に入ってる日付より2日前の日付を表示させたいのですが、どうしたらいいでしょうか? 最初の日付は別のシートで入力した日付が計算式で入っています。 もう一つの日付は、またさらに別のシートでカレンダーを作成して休日をのぞいたもので入力されています。 最初1営業日前で式が入っているのですが =VLOOKUP(F12,カレンダー,2,FALSE)といった式です。 F12は最初の日付のセルです。 カレンダーは別のシートで作ったカレンダー用のしーとです。 これを2営業日前に変更したいのですが、どこを変えればなりますか? 説明がわかりにくいようでしたらまた補足します。 作った人に聞けば早いのですが、今不在で急いで直さないといけないので。 よろしくお願いします。

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • エクセル関数について教えてください

    添付の画像のように、表1(シート)の社員別に日付と定時の労働時間と、残業時間の書いてあるデータを表2(シート)の該当する社員の該当する日に関数により反映されるようにしたいのですが、関数で可能でしょうか? 表1は下にずらっとデータとして打ち込んでいきます。 表2はB2の黄色い部分がリストになっていて、月が変わるようになっていて、そこを変えると日付情報が変わるようにしてあります。 ※表2の4行目の日付は表示形式により“日”だけ表示しています。 説明不足かもしれませんが、どうぞよろしくお願いします。

専門家に質問してみよう