是否可以基于Excel 2007中的列将电子表格拆分为多个文件?

Geofftnz

Excel中是否可以根据单个列的内容将一个大文件拆分为一系列较小的文件?

例如:我有所有销售代表的销售数据文件。我需要向他们发送一个文件以进行更正并发送回去,但是我不想向他们每个人发送整个文件(因为我不想让他们更改彼此的数据)。该文件如下所示:

salesdata.xls

RepName          Customer        ContactEmail
Adam             Cust1           [email protected]
Adam             Cust2           [email protected]
Bob              Cust3           [email protected]
etc...

为此,我需要:

salesdata_Adam.xls

RepName          Customer        ContactEmail
Adam             Cust1           [email protected]
Adam             Cust2           [email protected]

和salesdata_Bob.xls

Bob              Cust3           [email protected]

Excel 2007内置了什么功能可以自动执行此操作,还是我应该打破VBA?

戴夫·帕里洛(DaveParillo)

据我所知,没有一个宏可以分割数据并将其自动保存到一组文件中。VBA可能更容易。

更新我实现了我的建议。它遍历命名范围“ RepList”中定义的所有名称。命名范围是形式为= OFFSET(Names!$ A $ 2,0,0,COUNTA(Names!$ A:$ A)-1,1)的动态命名范围

模块如下。

Option Explicit

'Split sales data into separate columns baed on the names defined in
'a Sales Rep List on the 'Names' sheet.
Sub SplitSalesData()
    Dim wb As Workbook
    Dim p As Range

    Application.ScreenUpdating = False

    For Each p In Sheets("Names").Range("RepList")
        Workbooks.Add
        Set wb = ActiveWorkbook
        ThisWorkbook.Activate

        WritePersonToWorkbook wb, p.Value

        wb.SaveAs ThisWorkbook.Path & "\salesdata_" & p.Value
        wb.Close
    Next p
    Application.ScreenUpdating = True
    Set wb = Nothing
End Sub

'Writes all the sales data rows belonging to a Person
'to the first sheet in the named SalesWB.
Sub WritePersonToWorkbook(ByVal SalesWB As Workbook, _
                          ByVal Person As String)
    Dim rw As Range
    Dim personRows As Range     'Stores all of the rows found
                                'containing Person in column 1
    For Each rw In UsedRange.Rows
        If Person = rw.Cells(1, 1) Then
            If personRows Is Nothing Then
                Set personRows = rw
            Else
                Set personRows = Union(personRows, rw)
            End If
        End If
    Next rw

    personRows.Copy SalesWB.Sheets(1).Cells(1, 1)
    Ser personRows = Nothing
End Sub

该工作簿包含代码和命名范围。该代码是“销售数据”表的一部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据日期列将Excel电子表格拆分为单独的文件

是否可以从多个Google电子表格中创建一个pdf文件?

基于Excel电子表格中输入的订单

如何在 Linux 中也通过更新链接将 Excel 电子表格 2007 转换为 pdf

在VBA中的Access 2007中编辑Excel电子表格后,如何保存

在Excel(2007)电子表格中以连续数字的形式填充单元格

如何从包含多个表格的 Excel 电子表格中根据其标题选择表格?

OpenXML PowerTools:是否可以将 Excel 电子表格写入 .Net MemoryStream?

从Excel电子表格中读取,并使用XLSX中的数据重命名多个文件夹

计算列中的时差并将其保存为具有多个电子表格的许多excel文件,PYTHON

在电子表格中,是否可以将行分为几组,这些组在过滤后不会改变顺序?

如何将Excel工作簿中的多个电子表格合并为熊猫数据框?

将 Excel 电子表格单元格中的彩色文本解析为多个单元格?

如何将 PGN 中的数据转换/解析/提取到电子表格/谷歌表/excel 文件中?

电子表格基于与动态列的匹配来连接多个单元格

从一个Excel文件创建多个电子表格

如何自动打印Excel电子表格文件?

使用EPPlus验证Excel(电子表格)文件

如何分离从 Excel 电子表格导入的列以创建多个单独的列表

Excel将电子表格转换为html

将变量导出到Excel电子表格

将 Excel 转换为 Google 电子表格

将Excel电子表格转换为JSON

DQL / SQL到Excel-在电子表格中获取多个SELECT语句的结果

邮寄多个mailto:Excel电子表格中的链接

在多个Excel电子表格中查找并关联一个值

将Excel电子表格导出到固定宽度的文本文件?

如何将Excel电子表格另存为以分号分隔的值文件?

使用VBA将特定的文本文件导入Excel电子表格