我这里有一些代码可以为 A 列中的每个唯一单元格创建一个新的模板表。然后它将 E、F、L 和 O 列分配到新创建的模板表中的适当位置。
但是,它将数据表 E 列中的值放入创建的模板表的末尾。我将如何使它从第 4 行开始,这是值的空白单元格的开始。
此外,如果有人可以帮助使用一个新命令,如果模板表上已经有 F 列值,则该命令不会将同一行放入模板中。
Sub Redemption()
Dim wsDatatable As Worksheet
Dim wsTempelate As Worksheet
Dim rangeFound As Range
Dim rangeNames As Range
Dim NameCells As Range
Dim stringFirst As String
Dim stringNames As String
Dim stringUniqueNames As String
Set wsDatatable = Sheets("DATA INPUT TABLE")
Set wsTempelate = Sheets("CLASS GROUPING ID")
Set rangeNames = wsDatatable.Range("A2", wsDatatable.Cells(Rows.Count, "A").End(xlUp))
For Each NameCells In rangeNames.Cells
If InStr(1, "|" & stringUniqueNames & "|", "|" & NameCells.Text & "|", vbTextCompare) = 0 Then
stringUniqueNames = stringUniqueNames & "|" & NameCells.Text
Set rangeFound = rangeNames.Find(NameCells.Text, rangeNames.Cells(rangeNames.Cells.Count), xlValues, xlWhole)
If Not rangeFound Is Nothing Then
stringFirst = rangeFound.Address
stringNames = NameCells.Text
stringNames = Trim(Left(WorksheetFunction.Trim(stringNames), 31))
If Evaluate("IsRef('" & stringNames & "'!A1)") = False Then
wsTempelate.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = stringNames
End If
With Sheets(stringNames)
Do
If LCase(wsDatatable.Cells(rangeFound.Row, "I").Text) = "full liquidation" Or LCase(wsDatatable.Cells(rangeFound.Row, "I").Text) = "redemption" Then
.Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = wsDatatable.Cells(rangeFound.Row, "E").Value
.Cells(Rows.Count, "B").End(xlUp).Offset(1).Value = wsDatatable.Cells(rangeFound.Row, "F").Value
.Cells(Rows.Count, "C").End(xlUp).Offset(1).Value = wsDatatable.Cells(rangeFound.Row, "B").Value
.Cells(Rows.Count, "D").End(xlUp).Offset(1).Value = wsDatatable.Cells(rangeFound.Row, "O").Value
.Cells(Rows.Count, "E").End(xlUp).Offset(1).Value = wsDatatable.Cells(rangeFound.Row, "L").Value
End If
Set rangeFound = rangeNames.Find(NameCells.Text, rangeFound, xlValues, xlWhole)
Loop While rangeFound.Address <> stringFirst
End With
End If
End If
Next NameCells
Set wsDatatable = Nothing
Set wsTempelate = Nothing
Set rangeFound = Nothing
Set rangeNames = Nothing
Set NameCells = Nothing
End Sub