第1个回答 推荐于2017-10-10
试试这个是不是你想要的结果
Sub test()
Dim i,j as integer
For i=1 to 10000
For j=1 to 256
If cells(i,j) = "2012年度考核"
cells(i+1,j+1) = 2013
cells(i+1,j+2) = 8
cells(i+1,j+3) = 8
cells(i+2,j+1) = 2014
cells(i+2,j+2) = 4
cells(i+2,j+3) = 5
End If
Next
Next
End Sub
追问顺便了解下语法
第一个next是哪个变量自增?
追答从内向外
第一个Next 是 J
写成这样可能更直观一点:
Next j
Next i本回答被提问者采纳
第2个回答 2015-07-16
为什么要遍历所有单元格呢,你查找指定的单元格就行了
sub test()
Dim i, j As Integer
For i = 1 To 10000 '1000行最大
For j = 1 To 3 'A,B,C三列
If Cells(i, j).Value = "2012年度考核" Then
Cells(i, j + 1) = "2012" '这里可以改为其他单元格的值
Cells(i, j + 2) = "5"
End If
Next
Next
第3个回答 2015-07-16
sub test()
dim rng as range
set rng=activesheet.usedrange.find(what:="2012年度考核",lookat:=xlwhole)
if not rng is nothing then
rng.offset(1,0)="2013年度考核"
rng.offset(1,1)=2013
rng.offset(1,2)=8
rng.offset(1,3)=8
rng.offset(2,0)="2014年度考核"
rng.offset(2,1)=2014
rng.offset(2,2)=4
rng.offset(2,3)=5
end if
end sub
第4个回答 2015-07-16
Option Explicit
Sub test()
Dim cel As Range
If GetRange(ThisWorkbook.ActiveSheet.UsedRange, cel, "2012年度考核") Then
cel.Offset(1, 0) = "2013年度考核": cel.Offset(2, 0) = "2014年度考核"
cel.Offset(1, 1) = "2013": cel.Offset(2, 1) = "2014"
cel.Offset(1, 2) = 8: cel.Offset(2, 2) = 4
cel.Offset(1, 3) = 8: cel.Offset(2, 3) = 5
End If
End Sub
Function GetRange(rng As Range, cel, myStr As String) As Boolean
On Error GoTo L_end
Set cel = rng.Find(myStr, LookIn:=xlValues, lookat:=xlWhole)
GetRange = True
Exit Function
L_end:
GetRange = False
Debug.Print Err.Description
End Function