VBA遍历所有单元格,并在指定单元格输入内容
答案:4 悬赏:40 手机版
解决时间 2021-01-16 01:59
- 提问者网友:美人性情
- 2021-01-15 09:27
VBA遍历所有单元格,并在指定单元格输入内容
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-01-15 10:25
试试这个是不是你想要的结果
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
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
全部回答
- 1楼网友:迷人又混蛋
- 2021-01-15 12:25
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
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
- 2楼网友:风格不统一
- 2021-01-15 12:06
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
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
- 3楼网友:毛毛
- 2021-01-15 11:05
为什么要遍历所有单元格呢,你查找指定的单元格就行了
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
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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯