表の「上と一緒」禁止!

本日、とある商品の出荷台帳を確認したところ、大変ショッキングな表記になっていた。エッセンスだけを再現すると、こんな感じだ。
f:id:Infoment:20190516215718p:plain

駄目だ、この表は使い物にならない。これでは、集計も並び替えも、何もできないじゃないか。ということで、修正することにした。
f:id:Infoment:20190516220023p:plain

さて、どうしたものか。と、ここで、ことりちゅんさんが紹介されていたテクニックを思い出した(↓の「2.」)。

  1. 選択範囲の「↑」を全て、一旦空白に置換する。
  2. 選択範囲の空白全てに、「一つ上のセル参照」の数式をセット。
  3. 参照中の値を、そのまま選択範囲の値としてセット。

コードにすると、こんな感じだ。

Sub 上と一緒()
    With Selection
        .Replace "↑", vbNullString, xlWhole
        .SpecialCells(xlCellTypeBlanks) = "=R[-1]C"
        .Value = .Value2
    End With
End Sub

f:id:Infoment:20190516222638g:plain
極めてシンプルな点が、とても良いと思う。このテクニックを初めて見たとき、思わず感嘆。高校時代、賢い友人に物理のノートを見たときのことを思い出した。
もちろん、これでも出来る。

Sub 上と一緒()
    Dim r As Range
        For Each r In Selection
            If r = "↑" Then
                r = r.Offset(-1)
            End If
        Next
End Sub

あとは、各位の好みにお任せで。

参考まで。