我有一张主表,我将行分配到具有特定标签的不同表单。
我想让每一行分配到适当的选项卡(来自主服务器),这取决于B列中的信息。
我使用代码来分发列,但如果更改了列,则无法从主列中删除/更新列。然后我添加了一个ID#,它对每个任务都是唯一的。
我尝试将代码更改为从B列读取,但我最终得到的编号为1-31的新工作表。代码在我添加到ID#列之前有效并且有一行: Set rng = ActiveSheet.Range(ActiveSheet.Range("B3"), _
读 A3
。
我的代码:
Sub ProcessRows()
Dim rng As Range, cell As Range
Set rng = ActiveSheet.Range(ActiveSheet.Range("B3"), _
ActiveSheet.Cells(Rows.Count, 1).End(xlUp))
For Each cell In rng.Cells
cell.EntireRow.Copy CopyTo(cell)
Next cell
End Sub
'Return a range object to which a row should be copied
' Range returned is determined by the value in "rng"
Function CopyTo(rng As Range) As Range
Dim s As Excel.Worksheet, sName As String
sName = Trim(rng.Value) 'just in case...
On Error Resume Next 'ignore any error
Set s = ThisWorkbook.Sheets(sName) 'see if we can grab the sheet
On Error GoTo 0 'stop ignoring errors
If s Is Nothing Then 'sheet didn't exist: create it
Set s = ThisWorkbook.Sheets.Add( _
after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
s.Name = sName
rng.Parent.Rows(1).Copy s.Range("a1") 'copy headers
End If 'needed a new sheet
'return the first empty cell in column 1
Set CopyTo = s.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End Function
我遇到的问题是,如果没有唯一标识符,我不知道如果一条线路已经改变并且更新它并且我最终得到重复,那么如何让宏解密。我们全年都会添加到此工作簿中,因此对单个工作表进行宏更新可以节省大量时间。
总结一下,我需要一个宏:
- 将每个主表单行分配给每个适当标记的工作表。
- 如果有任何更改,我需要每个唯一的ID#来更新该行。
- 我还需要确保工作表上不存在重复项。
如果有办法让宏自动运行关闭文件,这将是一个奖金,但手动运行宏是我可以忍受的东西。