根据相对单元格引用更改单元格值

时间:2016-11-22 13:26:54

标签: excel vba excel-vba

我想创建一个宏,查看列中有“0”的位置:

  • 它将“0”替换为
  • 以上单元格值的一半
  • 用一半
  • 替换上面单元格的值

我尝试录制类似的内容:

Sub Macro14()
' Macro14 Macro
'
ActiveCell.FormulaR1C1 = "=R[-1]C/2"
Range("N57").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
Range("N56").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("N57").Select
Selection.Copy
Range("N56").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

但我不知道如何引用给定列中包含“0”的单元格。

2 个答案:

答案 0 :(得分:1)

您的问题有点不清楚,但这可能会对您有所帮助。

Sub Ncolumn()
   For Each Rng In Range("N1:N60") ' Change range to suit
       If Rng.Value = "0" Then Rng.Value = Cells(Rng.Row - 1, Rng.Column).Value / 2
   Next Rng
End Sub

答案 1 :(得分:0)

您需要循环遍历列,并添加条件逻辑。用它来帮助你。

 dim rNg as range
 dim rCell as range
 set rNg = ThisWorkbook.Sheets("YourSheet").Range("Your Range")
 for each rCell in rNg.Cells
 if rCell.Value = 0 Then
      'your code
 end if
 next rCell

这只是为了让你开始。学习它的最好方法是通过反复试验来解决一些问题。然而,这在很大程度上是你所需要的。

同样复制和粘贴,就像你上面的例子中所做的那样非常费力。你应该习惯告诉细胞有什么价值。即

ThisWookbook.Sheets("Sheet1").Range("A1").Value = ThisWorkbook.Sheets("Sheet2").Range("A1").Value

你是新人,所以这个细微差别不会太相关,但是当你进入更大的脚本进行vba时,性能将是一个重要的问题。