• ベストアンサー

エクセル VBA 自動マーク設定について

エクセルで悩んでいます どなたかご存じなら教えてください。 内容としてはセルAに発注年月を入力しており,セルBには納入年月を入力してい ます。発注年月と納入年月が同じ年月ならセルCに○と自動入力表示させたいのですが可能でしょうか。 

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

はて?なぜわざわざマクロにこだわるのでしょう。何か特別な目的があるのでしょうか。 とりあえずご質問の直接の回答その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),"○",""),"") と記入、以下コピーしておく。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! ↓の画像ではオーソドックスにC2セルに =IF(COUNTBLANK(A2:B2),"",IF(AND(YEAR(A2)=YEAR(B2),MONTH(A2)=MONTH(B2)),"○","")) という数式を入れフィルハンドルで下へコピーしています。m(_ _)m

kazunoko1689
質問者

お礼

ありがとうございました.教えていただいたマクロを参考にプログラムしてみます

関連するQ&A