はて?なぜわざわざマクロにこだわるのでしょう。何か特別な目的があるのでしょうか。
とりあえずご質問の直接の回答その1:
シート名タブを右クリック、コードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
dim h as range
on error resume next
for each h in application.intersect(target, range("A:B"))
if h <> "" and format(cells(h.row, "A").value, "yyyymm") = format(cells(h.row, "B").value, "yyyymm") then
cells(h.row, "C") = "○"
else
cells(h.row, "C").clearcontents
end if
next
end sub
ファイルメニューから終了してエクセルの戻る
A列、B列に「生データを記入する」
#ご相談では書かれてませんが、今まで同じ年月で入ってたのをわざわざ変更して異なる年月にした等で、○を消すようにします
ご相談の直接の回答その2:
sub macro1()
dim h as range
on error resume next
for each h in range("A:B").specialcells(xlcelltypeconstants, xlnumbers)
if format(cells(h.row, "A").value, "yyyymm") = format(cells(h.row, "B").value, "yyyymm") then
cells(h.row, "B") = "○"
end if
next
end sub
ファイルメニューから終了してエクセルに戻る
A列、B列に記入し、マクロを実行する
ご相談では聞いてないけどごく一般的なやり方:
C列に
C2:
=IF(ISNUMBER(A2),IF(A2-DAY(A2)=B2-DAY(B2),"○",""),"")
と記入、以下コピーしておく。
お礼
ありがとうございました.教えていただいたマクロを参考にプログラムしてみます