• 締切済み

日付に応じてセルに記号を表示する式をいれたい

windows10,excel365soloを使用の超初心者です。 現在セルBJ27からBJ87に日付が入っています。 CU27~CU54のセルの間に =IF(AND($BJ27>=$BL$4,$BJ27<=$BS$4),"※",0) =IF(AND($BJ28>=$BL$4,$BJ28<=$BS$4),"※",0) =IF(AND($BJ29>=$BL$4,$BJ29<=$BS$4),"※",0)  以下続く CU55~CU87のセルの間に =IF(AND($BJ55>=$CC$4,$BJ55<=$CJ$4),"※※",0) =IF(AND($BJ56>=$CC$4,$BJ56<=$CJ$4),"※※",0) =IF(AND($BJ57>=$CC$4,$BJ57<=$CJ$4),"※※",0)  以下続く ※が表示されているセルは、28番目までです。 ※※が表示されているセルは29番目をスタートとして28番目までです。 つまり、28日ごとに※と※※とを入力していきます。 現在のシートは4月21日開始です。 やりたいことは、毎月シートの日付が入れ替わりますので、マクロで セルに数式をいれたいです。コードを教えていただきたいです。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>マクロでセルに数式をいれたいで >コードを教えていただきたい VBAではふつうは、セルに数式を入れたりしません。 IF文そのものを使い、作ります。 ・それよりも、写真に写っている日付列のデータは、日付シリアル値ですか? ・$CC$4や$BS$4(From、Toの日付らしい)が日付シリアル値ですか? これらについて、確信をもって答えられるのが肝心です。 >日付シリアル値の何たるかを知らないで関数やVBAをやっている初心者が何と多いことか。 ーー 後は、一番上の日付行から、最終行まで、For Nextでクリアしさえすればよい。 掲示座像では列番号(A,B,C・・)がわからないので、コードが組みにくい。 また日付と曜日は同一セル内のようにも見えるが、どんなんですか? セルのデータの性格(数字、文字列、日付シリアル値など)に関しての説明がなく(重要視してないだろう)ので、まだマクロを使うのは早すぎるのでは。 ーー 1,2セルに、数式をセルに入れてみて、その際マクロの記録を採ればコードが出てくるのでは。 A1セルに式=IF(A1<$F$1,"A","B"≫を入れた例。F1には2020/6/3 データ例 A1:A8 B列は式を複写 2020/6/1 A 2020/6/2 A 2020/6/3 B 2020/6/4 B 2020/6/5 B 2020/6/6 B 2020/6/7 B 2020/6/8 B B1(だけ)での式を入れた例。 Sub Macro1() Range("B1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]<R1C6,""A"",""B"")" Range("B1").Select End Sub FormulaR1C1 = "=IF(RC[-1]<R1C6,""A"",""B"")”などと、初心者にはよくわからない式が出てくる。A1形式で式を入力できるか? かえって初心者には、手に負えない。 ーー 素直に Sub test02() For i = 1 To 8 If Cells(i, "A") < Range("F1") Then Cells(i, "B") = "A" Else Cells(i, "B") = "B" End If Next i End Sub とするほうが簡単。 このコードさえも質問しなければ、ならないようなら、VBAの本を初めから勉強のこと。

aitaine
質問者

お礼

ここで教えて頂いたコード理解できませんでした。自分で次のようにしたら計算式がはいりました。いろいろご講義ありがとうございました。 Sub 符号をつける() Range("CU27:CU54").Formula = _ "=IF(AND($BJ27>=$BL$4,$BJ27<=$BS$4),""※"","""")" Range("CU55:CU82").Formula = _ "=IF(AND($BJ55>=$CC$4,$BJ55<=$CJ$4),""※※"","""")" End Sub

関連するQ&A