【发布时间】:2021-07-15 07:48:10
【问题描述】:
我有一个 VBA 程序,它需要根据工作表名称来复制和粘贴值。
工作表名称将在特定列(Bin 列)中提取,并将作为添加工作表的名称基础。有没有一种方法可以复制这些值并根据它们的 Bin 值粘贴它们?
例如,我的 bin 值是 QWE, RTY, UIO,它们在原始工作表上重复,这就是我创建列表的原因。然后创建列表后,Sub CreateSheets() 将创建工作表QWE、工作表RTY 和工作表UIO。我的问题是如何根据工作表名称和设置编号粘贴值。
样本数据表
这是我提取和创建垃圾箱列表(删除重复值)的代码
Sub BIN_Values_List()
Dim rSelection As Range
Dim ws As Worksheet
Range("F3:F" & Range("F" & Rows.Count).End(xlUp).Row).Select
Set rSelection = Selection
Set ws = Worksheets.Add
ws.Name = "BIN LIST"
rSelection.Copy
With ws.Range("A1")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteValues
End With
ws.UsedRange.RemoveDuplicates Columns:=Array(1), Header:=xlGuess
On Error Resume Next
ws.UsedRange.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlShiftUp
On Error GoTo 0
ws.Columns("A").AutoFit
Application.CutCopyMode = False
End Sub
创建列表后,此代码将根据 bin 列表以及结果模板创建和重命名工作表。
Sub CreateSheets()
lastcell = ThisWorkbook.Worksheets("BIN LIST").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastcell
With ThisWorkbook
newname = ThisWorkbook.Worksheets("BIN LIST").Cells(i, 1).Value
.Sheets.Add after:=.Sheets(.Sheets.Count)
ActiveSheet.Name = newname
Sheets("RESULT TEMPLATE").Range("A1:E205").Copy
ActiveSheet.Paste
End With
Next
ThisWorkbook.Worksheets("SHEET1").Activate
ThisWorkbook.Worksheets("SHEET1").Cells(1, 1).Select
End Sub
【问题讨论】: