
答え1
この動作は仕様によるものです。連続していないセルを選択してコピーすると、Excel は元の位置を記憶しません。
回避策:
- 値を 1 つずつ対象セルにコピーします。
- まず列全体をコピーし、次にフィルター処理して「Banana」を含むすべてのセルを除外し、他のすべての行からコンテンツを削除します。
- 数式を使用して、「バナナ」が他のシートの同じセルにあるかどうかを確認し、ある場合にのみ値を返します。次の数式が機能するはずです。
=IF(B2="Banana",B2,"")
マクロを使用して列 B のすべてのセルを確認し、"Banana" と表示されている場合は列 D に値を複製します。Sub BananaCopy() Const csSrc As String = "B" Const csTgt As String = "D" Const csFruit As String = "Banana"
Dim rngFruits As Range, rngCell As Range Set rngFruits = Range(csSrc & 1, csSrc & Rows.Count) For Each rngCell In rngFruits If rngCell.Value = csFruit Then Range(csTgt & rngCell.Row).Value = csFruit End If Next rngCell
終了サブ