如果单元格值发生变化,则仅将单元格值发生变化的那一列复制到另一个工作表,但要针对两个工作表中的公共值

if cell value changes, then copy only that column from which cell value changed, to another worksheet,but against common value in both the sheets

我确实有 Excel sheet,其中我插入了 IF 公式,

=IF(C23='Data Nifty'!$AD,"CMP"," ")

如上所述使用更早的派生"CMP",是在另一种情况下完成的

=IF(A23="CMP",VLOOKUP($D,'Data Nifty'!$N:$Y,7,FALSE)," ")

现在的问题是,如果 CMP 与其他列发生变化,那么值会从原来提到的较早的 CMP 消失,我想确保一旦 CMP 出现,值就不会改变。

我试过 vba 代码,如果值发生变化,将数据复制到另一个工作sheet,但它没有用。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.range = "A:A" Then
        Call copy_paste_as_value
    End If
End Sub


Sub copy_paste_as_value()
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C4").Select
    Application.CutCopyMode = False
End Sub

当前问题:-当cmp从一个价格变为另一个价格时,上一个CMP前面提到的值变为0,并且新值出现在新cmp

(我的objective:-如果出现一次"CMP",前面提到的值(在上图中,即26,55,110.35,117,29.35,9)应该保持原样is & new values 也应该出现在 new cmp 的前面,所以简而言之,所有值都应该保持原样,一旦 CMP 被派生)

满满的希望,我已经将我的查询解释到了可以理解的程度。

我们将衷心感谢您的帮助。

这应该可以解决您的问题,试试这个代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then copy_paste_as_value
End Sub

Sub copy_paste_as_value()
    With ActiveSheet
        .Range(.Cells(4,1),Cells(Rows.Count, 1).End(xlUp)).Copy
        .Range("B4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
    Application.CutCopyMode = False
End Sub