• ベストアンサー

列と列が条件に合致したら表示を変える

エクセル2013 1行目は見出し。 J列 に価格が入っています。 N列に客先名が入っています。(仮に 東京、大阪、福岡・・・) A列の最終行を取得して J列が 0 で、且つN列が 東京 だったら-PMを加え N列の東京を 東京-PM と表示。 また、 J列が 0 で、且つN列が 大阪 だったら-PMを加え N列の大阪を 大阪-PM と表示。 J列が 0 でなかったら N列はそのまま。 これらをマクロで組むにはどうしたら宜しいでしょうか? ご教示ください。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

一例ですが。。。 Sub PMSET() For i = 2 To Range("J2").End(xlDown).Row WK = Replace(Cells(i, 14), "-PM", "") If Cells(i, 10) = 0 Then WK = WK & "-PM" End If Cells(i, 14) = WK Next i End Sub

maron1010
質問者

お礼

シンプルで動作も確認できました。 ありがとうございました。

その他の回答 (2)

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

こんにちは! 色々やり方はあると思いますが、一例です。 Sub Sample1() Dim k As Long, lastRow As Long, myAry lastRow = Cells(Rows.Count, "A").End(xlUp).Row myAry = Array("東京", "大阪") For k = 0 To UBound(myAry) With Rows(1) .AutoFilter field:=10, Criteria1:=0 .AutoFilter field:=14, Criteria1:=myAry(k) End With If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Range(Cells(2, "N"), Cells(lastRow, "N")).SpecialCells(xlCellTypeVisible) = myAry(k) & "-PM" End If Next k ActiveSheet.AutoFilterMode = False End Sub こんな感じではどうでしょうか?m(_ _)m

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

> A列の最終行を取得して 最終行=Range("A" & Rows.Count).End(xlUp).Row > J列が 0 で、且つN列が 東京 だったら-PMを加え > N列の東京を 東京-PM と表示。 > また、 > J列が 0 で、且つN列が 大阪 だったら-PMを加え > N列の大阪を 大阪-PM と表示。 If Range("J" & 最終行).Value = 0 Then If Range("N" & 最終行).Value = "東京" Then Range("N" & 最終行).Value = "東京-PM" ElseIf Range("N" & 最終行).Value = "大阪" Then Range("N" & 最終行).Value = "大阪-PM" End If End If > J列が 0 でなかったら N列はそのまま。 上記で0の時の処理をしているので、0でない場合は何もしなくてもN列はそのままです。 という、処理でいかがでしょう。

関連するQ&A