改变细胞值
问题描述:
我想创建一个宏看起来在“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”的单元格。
答
你会想循环遍历你的列,并添加条件逻辑。用它来帮助你。
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性能更大的脚本将是一个signifcant问题,那么。
答
你的问题有点不清楚,但这可能对你有帮助。
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
嗨安德烈,你可能会想看看IF声明。 http://www.excel-easy.com/vba/if-then-statement.html – maxhob17
您需要观看本系列[Excel VBA简介](https://www.youtube.com/playlist?list=PLNIs- AWhQzckr8Dgmgb3akx_gFMnpxTN5)。这是相关的[Excel VBA简介第5部分 - 选择单元格(范围,单元格,活动单元格,结束,偏移)](https://www.youtube.com/watch?v=c8reU-H1PKQ&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index=5) – 2016-11-22 14:04:19
看看'FIND'。它比循环更快,示例显示如何找到一个值并将其替换为另一个值。 https://msdn.microsoft.com/en-us/library/office/ff839746.aspx **提示:**要在示例中使用'c.Offset(-1)'获得前一行值, –