image.png
初始表只有這樣一個(gè)旋讹,目標(biāo)表是這樣
image.png
廢話不多說殖蚕,直接上代碼:
其實(shí)只要描述清楚,AI就可以給你答案:
我的描述:
我有一個(gè)excel表格沉迹,表頭有合并睦疫,下面有序號(hào),序號(hào)從1開始鞭呕,下面只有一行蛤育,然后復(fù)制這個(gè)表,隔三行進(jìn)行粘貼葫松,序號(hào)自增為2缨伊,再重復(fù)這個(gè)過程,直到復(fù)制50份进宝,怎么快速的實(shí)現(xiàn)這個(gè)表格刻坊,需要更新的序號(hào)初始位置在A5單元格,需要復(fù)制的表格從A1到F5
AI返回結(jié)果:
Sub CopyTablesWithIncrementalSerialNumbers()
Dim sourceRange As Range
Dim targetRange As Range
Dim serialCell As Range
Dim i As Long
Dim offsetRow As Long
' 設(shè)置源范圍党晋,即需要復(fù)制的表格區(qū)域
Set sourceRange = ThisWorkbook.Sheets("Sheet1").Range("A1:F5") ' 假設(shè)表格在Sheet1上
' 設(shè)置序號(hào)單元格
Set serialCell = ThisWorkbook.Sheets("Sheet1").Range("A5")
' 設(shè)置目標(biāo)區(qū)域的初始行偏移量谭胚,每張表之間間隔三行
offsetRow = 7 ' 包括表本身的一行和下面的三行
' 循環(huán)復(fù)制50次
For i = 1 To 50
' 計(jì)算目標(biāo)區(qū)域的起始位置
Set targetRange = ThisWorkbook.Sheets("Sheet1").Cells(sourceRange.Row + offsetRow * i, sourceRange.Column)
' 復(fù)制源范圍到目標(biāo)位置
sourceRange.Copy Destination:=targetRange
' 更新序號(hào)
serialCell.Offset(offsetRow * i).Value = i + 1
Next i
' 清除剪貼板
Application.CutCopyMode = False
End Sub
完美!N床!灾而!
讓AI重新翻譯這段代碼,并加注釋
Sub CopyTablesWithIncrementalSerialNumbers()
' 定義變量
Dim sourceRange As Range ' 源范圍扳剿,即需要復(fù)制的表格區(qū)域
Dim targetRange As Range ' 目標(biāo)范圍旁趟,復(fù)制后放置的區(qū)域
Dim serialCell As Range ' 序號(hào)單元格,存放序號(hào)的單元格
Dim i As Long ' 循環(huán)計(jì)數(shù)器
Dim offsetRow As Long ' 表格間偏移行數(shù)庇绽,每次復(fù)制后空出的行數(shù)
' 設(shè)置源范圍锡搜,假設(shè)表格在Sheet1的A1到F5
Set sourceRange = ThisWorkbook.Sheets("Sheet1").Range("A1:F5")
' 設(shè)置序號(hào)單元格,即初始序號(hào)所在的單元格
Set serialCell = ThisWorkbook.Sheets("Sheet1").Range("A5")
' 設(shè)置每次復(fù)制后表格間的行數(shù)偏移量瞧掺,包括當(dāng)前表格占用的行和其下三行空行
offsetRow = 7
' 循環(huán)復(fù)制操作耕餐,總共復(fù)制50次
For i = 1 To 5
' 計(jì)算目標(biāo)區(qū)域的起始位置,基于偏移量和當(dāng)前循環(huán)次數(shù)
Set targetRange = ThisWorkbook.Sheets("Sheet1").Cells(sourceRange.Row + offsetRow * i, sourceRange.Column)
' 將源范圍的內(nèi)容復(fù)制到計(jì)算出的目標(biāo)位置
sourceRange.Copy Destination:=targetRange
' 更新序號(hào)辟狈,每次復(fù)制后在原始序號(hào)基礎(chǔ)上加1并根據(jù)偏移量定位到正確行
serialCell.Offset(offsetRow * i).Value = i + 1
Next i
' 清除剪貼板狀態(tài)肠缔,避免影響后續(xù)操作
Application.CutCopyMode = False
End Sub
上面的次數(shù)可以調(diào)整夏跷,50次我改為了5,由于VBA運(yùn)行速度較慢明未,所以為了測(cè)試我只運(yùn)行5次槽华;