我确实在Excel表中插入了IF
公式,
即=IF(C23='Data Nifty'!$AD$2,"CMP"," ")
如上所述,使用错误衍生的“ CMP”是在另一种情况下进行的
即=IF(A23="CMP",VLOOKUP($D$3,'Data Nifty'!$N:$Y,7,FALSE)," ")
现在的问题是,如果CMP在其他列中发生更改,那么从提到错误CMP的原始值开始进行价值分配,我想确保一旦CMP出现,值就不会更改。
我已经尝试过vba代码,如果值发生更改,则将数据复制到另一个工作表中,但是没有用。
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上
(我的目标:-如果出现“ CMP”,则该值前面的值(在上图中即26,55,110.35,117,29.35,9)应保持原样,并且新值也应出现在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
关于excel - 如果单元格值发生变化,则仅将单元格值发生变化的那一列复制到另一个工作表中,但将两个表中的共同值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56266520/