当前位置: 首页 > 知识库问答 >
问题:

excel为每行创建新工作表

张权
2023-03-14

数据

第一页用于数据输入。每行代表一张服务票。每列将表示有关服务事件的数据,如序列号或型号。

期望的结果

对于包含特定字段(列a ~“票证号”)中数据的每一行,Excel将基于模板创建一个新的工作表(服务票证),并将相应行中的数据放入指定的单元格中。

提前感谢您提供的任何帮助。

共有1个答案

查学文
2023-03-14

我首先要说的是,您应该小心处理这一点,因为工作簿中的工作表数量是有限制的。但这里有一些vb中的代码。它应该为您提供在vba中完成它的逻辑。在引用工作表和单元格时会有一些不同。

您需要声明正在阅读的工作表

Dim ws As Excel.Worksheet
Set ws = ea.Worksheets(1)

它可能从工作表索引0开始,因此设置ws=ea。工作表(0)或者有类似Excel的东西。应用程序。活动表

下面是循环行并检查列A的值的逻辑。

dim lRow as integer
Do While lRow <= ws.UsedRange.Rows.Count
    If ws.Range("A" & lRow).Value <> "" Then Then
        'If cell A is not blank we then call the worksheet add function.
        'Pass the name you want the worksheet and the page setup arguments.
        WorksheetAdd ws.Range("A" & lRow).Value, xlPaperLetter, xlPortrait
        ws.name = ws.Range("A" & lRow).Value
    End If

    lRow = lRow + 1
    ws.Range("A" & lRow).Activate

Loop

您将需要这样的Worksheetad函数

Private Sub WorksheetAdd(szJobNumber As String, Papersize As XlPaperSize,     PageOrientation As XlPageOrientation)
Dim bDisplayAlerts As Boolean

    On Error GoTo ErrorHandler

    'Add worksheet to workbook.
    Set ws = ea.Worksheets.Add
    ws.Name = szJobNumber
    With ws.PageSetup
        .Orientation = PageOrientation
        .LeftFooter = "&D"
        .CenterFooter = "&A"
        .RightFooter = "Page &P of &N"
        .Papersize = Papersize
    End With
    On Error GoTo 0

Exit Sub
ErrorHandler:
    If Err.Number = 1004 Then
        If MsgBox("There has been an error(#1004). Contact support. Excel is not installed or produced an error. Also, check for default printer.",vbCritical,     "Information") = vbOK Then
            'Unload frmPTReports
            Exit Sub
        End If
    Else
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
End Sub
 类似资料:
  • 我正在处理一个Excel工作簿,我希望工作簿为每一行新数据创建一个新工作表。下面的代码确实可以做到这一点,但问题是Excel使用每一行第一列中的文本作为新工作表的名称。我想更改它并使另一列成为新工作表名称的来源。请告知我需要更改哪一行才能完成此操作。谢谢您的帮助!

  • 我有如下数据集: 这是我们数据库中每个帐户的备忘录集合。“1abc”中的1表示帐户ID,字母表示一些文本。总共有177列和1866行,但并非每行都有177列之前的值,有些行可能只有两列数据。 我需要每一列下拉到A列的底部,以便所有数据只占用A列。例如,B列中的所有数据都将插入A列中的最后一个值之后。C列中的数据将插入A列中的最后一个值之后,它已填充了来自B的数据,依此类推。 最后,它应该是这样的(

  • 如图所示,我有原始数据(A2:C6),我想根据B列中的每个唯一值创建一个新工作簿。在该示例中,“颜色”列中有4种颜色和3种唯一颜色,因此我将创建3个不同的新工作簿(Red.xlsx、Yellow.xlsx和Orange.xlsx),如图底部所示。 所以我想到的代码如下,但不确定如何检查工作簿是否已经创建: 我的代码的问题是,它会创建重复的工作簿,如红色。在本例中,xlsx两次。对于如何解决问题或采

  • 我正在尝试为Excel文件中的每一行创建一个单独的XML文档。第1行列出了标记名,A列标识了每行的文档标题。 我在VBA方面相当缺乏经验,但这正是我迄今为止根据对类似问题的多个答案得出的结论。 我还没有完成“GetElementsByTagName”部分,因为该部分导致了问题。对于下一行,我得到错误“Object variable or With block variable not set”。

  • 我有以下代码,可以很好地将相关数据复制到我的工作表中。我为J列中的每个唯一部门手动创建每个工作表,然后运行此宏。我想要一个基于J列中的唯一值动态创建工作表的宏。我在网上找到了很好的资源,但当它到达已经为其创建了工作表的行时,我发现的资源似乎会出错。在手动创建其他工作表之前,我包含了我当前使用的代码以及我的清单表的屏幕截图

  • 首先,让我说这个网站是天赐之物! 我有一系列每月B2:AS40的数据。月份在A2:AS2中,A2:A40中是姓名列表,所有这些都在“Sheet1”中 经过之前在这里的一些搜索,我想出了以下内容,脚本为每一行制作一个新图表,创建一个标题,并以6个月的间隔放入MajorGridline,但是没有绘制数据。我这辈子都不知道为什么!! 请帮帮忙 样本数据: 将脚本更改为以下内容后: 脚本不会在每次运行时都