vba单元格批量赋值,EXCEL——VBA对文件夹下所有表格的特定单元格赋值
image
不知道大家有沒有遇到過這種情況,一個文件夾下有很多Excel文件,每個文件里面一個或多個表都有一個同樣的單元格,比如自己的名字啊、生日啊之類的。這個時候如果要改動這個單元格的內(nèi)容我們需要一個個改動,就非常麻煩。這個時候我們可以通過VBA的方式來解決這個問題。。
image.png
如上圖,我們這個文件夾下有兩個表格,每個表格中都有幾個sheet,這幾個sheet中有幾乎都有一個單元格內(nèi)容如下:
image.png
我們現(xiàn)在要把這個文件夾下所有EXCEL表里面所有sheet中的這個李明后面的內(nèi)容改成17歲,應該怎么改呢?
Sub 遍歷替換()
Dim FindRng As Range
Dim temp
lookingname = "李明"
Price = 22
Application.ScreenUpdating = False
Dim Filename, wb As Workbook, Sht As Worksheet
Filename = Dir(ThisWorkbook.Path & "\*.xlsm")
MsgBox ThisWorkbook.Path
MsgBox Filename
Do While Filename <> ""
If Filename <> ThisWorkbook.Name Then
fn = ThisWorkbook.Path & "\" & Filename
Set wb = Workbooks.Open(fn)
'Set Sht = wb.Worksheets(1)
For Each temp In wb.Worksheets
Set FindRng = temp.UsedRange.Find(lookingname, lookat:=xlWhole)
If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
Next
'Set FindRng = Sht.UsedRange.Find(lookingname, lookat:=xlWhole)
'If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
wb.Close True
End If
Filename = Dir
Loop
Application.ScreenUpdating = True
End Sub
利用這段代碼,可以將同一文件夾下的其他表格(非當前執(zhí)行代碼的表格)中所有sheet中的“李明”后面的單元格內(nèi)容替換。極大的提高了效率,尤其在文件很多的情況下。
下面我們來對代碼進行一下講解
Filename = Dir(ThisWorkbook.Path & "\*.xlsm")
用Dir來對當前表格下的所有xlsm進行遍歷,下面這個循環(huán)便是對每個表格進行操作
Do While Filename <> ""
If Filename <> ThisWorkbook.Name Then
fn = ThisWorkbook.Path & "\" & Filename
Set wb = Workbooks.Open(fn)
'Set Sht = wb.Worksheets(1)
For Each temp In wb.Worksheets
Set FindRng = temp.UsedRange.Find(lookingname, lookat:=xlWhole)
If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
Next
'Set FindRng = Sht.UsedRange.Find(lookingname, lookat:=xlWhole)
'If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
wb.Close True
End If
Filename = Dir
Loop
其中
fn = ThisWorkbook.Path & "\" & Filename
Set wb = Workbooks.Open(fn)
'Set Sht = wb.Worksheets(1)
For Each temp In wb.Worksheets
Set FindRng = temp.UsedRange.Find(lookingname, lookat:=xlWhole)
If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
Next
'Set FindRng = Sht.UsedRange.Find(lookingname, lookat:=xlWhole)
'If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
wb.Close True
這一段代碼是將文件夾下每個文件都打開然后對其中的sheet進行遍歷,并通過
Set FindRng = temp.UsedRange.Find(lookingname, lookat:=xlWhole)
If Not FindRng Is Nothing Then FindRng.Offset(, 1) = Price
這兩句代碼來查找特定單元格并賦值。最后一個接一個打開又關閉workbook來達到替換所有單元格的效果。。。
最后,我們就可以看到所有的“李明”后面的單元格,都改變成了代碼中指定的內(nèi)容:
image.png
其他sheet也是已經(jīng)更改,就不一一截圖了~~
就是這樣,希望能幫到大家,謝謝~~
總結(jié)
以上是生活随笔為你收集整理的vba单元格批量赋值,EXCEL——VBA对文件夹下所有表格的特定单元格赋值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 经纬度 距离排序,php mys
- 下一篇: php robots.txt,robot