• ベストアンサー

日付けと曜日の結合

以前に質問して日付けと曜日を同じセルに表示して条件付き書式から日曜日に色をつけることができましたが、これだと年月日まで色がつきます。 そこでB1に年度の2009、C1に月の11、B3から日付けの1から31を入力。C3に=date(b1,c1,b3) と式を入れ 年月日を表示、 d3に =TEXT(DATえ($B$1,$C$1,$B3),"aaa") として条件書式で日曜日を赤表示にしました。 ほかの 1つのセルに c3とd3を結合して表示したいのですが、 =c3&d3 では表示できません。 c3、d3の結果を文字列にするとかして 結合できないものでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • MotoShin
  • ベストアンサー率33% (4/12)
回答No.1

=TEXT(C3,"yyyy/mm/dd aaa") むしろこんな感じではだめでしょうか?

その他の回答 (3)

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

解答No3です。 日にちの表示と曜日の表示を一つのセルにして日曜日の文字だけに赤色を付けることは関数ではできません。マクロを使うことになります。 マクロを作成する前に該当のシートのB3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(B$1="",C$1="",MONTH(DATE(B$1,C$1,ROW(A1)))<>C$1),"",TEXT(DATE(B$1,C$1,ROW(A1)),"yyyy/m/d")&"("& TEXT(DATE(B$1,C$2,ROW(A1)),"aaa")&")") セルには文字列として入力されることになります。 その後にシート見出しで該当のシート名を右クリックして「コードの表示」をクリックします。 表示される画面の右側の画面に次のマクロを入力します。 Sub 日曜日色付け() Dim i As Integer Dim n As Integer Dim MOJI As String For i = 3 To 33 If WorksheetFunction.CountIf(Range("B" & i), "*日*") > 0 Then Range("B" & i).Select n = Len(Range("B" & i).Value) MOJI = Range("B" & i).Value ActiveCell.FormulaR1C1 = MOJI With ActiveCell.Characters(Start:=n - 1, Length:=1).Font .Color = -16776961 End With End If Next End Sub マクロを実行するためには「開発」タブの「マクロ」をクリックし、表示の画面で日曜日色付けを選択して「実行」すればよいでしょう。

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

=C3&D3のような式を使った場合にはC3セルは日付の入ったセルで、そのデータはシリアル値(1900年1月1日が1となっている数値)で評価されていますのでそのシリアル値が表示され2009年11月1日は40118となって=C3&D3は40118日のように表示されてしまいますね。 2009/11/1日のように表示するのでしたら次のような式にすることが必要です。C3の値をシリアル値ではなく日付の形をした文字列にすることが必要です。 =TEXT(C3,"yyyy/m/d")&D3 D3の曜日はC3の値から直接、aaaとすることで求めることができますので、 次の式でよいのですが。 =TEXT(C3,"yyyy/m/d aaa") なお、B3から下方のセルには1から31まで入力をしているようですが年と月が別のセルで設定されているのですから次のような式を直接にB3セルに入力し下方にオートフィルドラッグすればよいでしょう。設定した月に応じた日付を表示させることができます。 =IF(MONTH(DATE($B$1,$C$1,ROW(A1)))<>C$1,"",DATE($B$1,$C$1,ROW(A1))) 式を入力し下方にドラッグした時点ではシリアル値がセルに表示されます。 その後にそれらのセルを右クリックして「セルの書式設定」から「表示形式」の「日付」で任意の表示形式を選ぶこともできますし、単に1と数値のみを表示させるのでしたら、「ユーザー定義」を選び、右の種類の窓に d のみを入力すれば、11月でしたら30までの数値が表示されますね。 日や曜日を含めてB3セルから下方に表示させるのでしたら「ユーザー定義」で、例えば d"日"(aaa) のように入力すればよいでしょう。 このようにすることでB列のみで日にちや曜日を表示させることができますね。

suyo93
質問者

補足

すみません。質問の仕方が悪かったですね。2つのセルは結合できましたが、年月日を省いて曜日だけに色をつけたいのですが・・・・ 簡単な方法はありませんンか

  • MotoShin
  • ベストアンサー率33% (4/12)
回答No.2

こうしたらさらに利用するセルが減ります。 =TEXT(DATE(B1,C1,B3),"yyyy/mm/dd aaa")

関連するQ&A