excel - 从一列单元格创建新工作表,同时避免重复
问题描述
我有几列需要排序的长数据。在第一列中,我有工作表的名称。但是那里有几个重复项会给我一个错误消息,因为每张表都需要一个唯一的名称。第二列和所有其他列将分布在工作表中,但到目前为止这不是我担心的,因为我不能让第一部分不给我错误消息。它工作正常,直到它遇到重复的条目。
Dim lastRow As Long
Dim sheetname As Variant
Dim sheetexists As Boolean
Dim cellname As Variant
Dim worksheet_count As Integer
Dim mysheet As Worksheet
'Find the last non-blank cell in column A1
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
worksheet_count = ActiveWorkbook.Worksheets.Count
sheetexists = False
For j = 1 To worksheet_count
sheetname = Cells(i, 1).Value
cellname = Sheets(j).Name
If cellname = sheetname Then
sheetexists = True
a = 5
Exit For
End If
Next j
If sheetexists = False Then
'create sheet, rename sheet
Worksheets(1).Select
sheetname = Cells(i, 1).Value
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = sheetname
End If
Next i
解决方案
下面是一种不那么繁琐的方法来做你想做的事。
注意:假设工作表名称位于活动工作表第 1 列的第 2 行以上(根据您的代码):
Sub CreateSheets()
Dim lgErr&, rgRg As Range, rgShNames As Range
Set rgShNames = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
For Each rgRg In rgShNames.Cells
If rgRg <> "" Then
On Error Resume Next: Err.Clear
With Sheets(rgRg.Value): End With
lgErr = Err: On Error GoTo 0
If lgErr <> 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = rgRg
End If
End If
Next rgRg
End Sub
推荐阅读
- javascript - 在javascript中如何在具有嵌套数组的对象数组中查找值
- go - 我无法导入“cloud.google.com/go/datastore”
- java - 关于布尔条件(可能是 Java)的双括号的问题?
- javascript - 将用户输入限制为数组中的值
- python - 遍历字符串并打印字符之间的距离
- java - 运行 Maven 插件的单元测试时抛出异常 - ComponentLookupException :: NoSuchElementException :: RepositorySystem
- python - 日期格式为月
- python-3.x - 按数字对图像文件名列表进行排序
- matlab - 在 Matlab 中截断所需支持的泊松分布
- php - 用另一个数组键值 PHP 更改数组键