Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel 2003中将信息从1列拆分为4列_Excel_Vba_Excel 2003 - Fatal编程技术网

在Excel 2003中将信息从1列拆分为4列

在Excel 2003中将信息从1列拆分为4列,excel,vba,excel-2003,Excel,Vba,Excel 2003,我在Excel 2003中有一个包含雇主信息的列表 我收到的列表中的信息在同一列中: 日期: SECTOR X NAME KETCHUP, ASH 25/01/2017 31/02/2017 DORKMAN, RYAN 28/01/2017 30/05/2017 PEROTI, MAMA 26/01/2017 13/02/2017 28/06/2017 SECTOR Y NAME JIMENEZ, PEPE 16/01/2017 REDFIED, CHRIS 12/01/2017

我在Excel 2003中有一个包含雇主信息的列表

我收到的列表中的信息在同一列中:

日期:

    SECTOR X
NAME
KETCHUP, ASH
25/01/2017
31/02/2017
DORKMAN, RYAN
28/01/2017
30/05/2017
PEROTI, MAMA
26/01/2017
13/02/2017
28/06/2017
 SECTOR Y 
NAME
JIMENEZ, PEPE
16/01/2017
REDFIED, CHRIS
12/01/2017
JUMILLA , MANUEL
02/01/2017
12/01/2017
22/07/2017
30/07/2017
 SECTOR U 
NAME
KENEDY, LION
16/04/2017
VALENTINE, JILL
12/07/2017
KEPER, KNOR
02/03/2017
12/03/2017
22/10/2017
30/10/2017
我有100多个名字,每个名字都有各自的月份

我粘贴如下:

日期

SECTORS       NAME             DATE    TOTAL
SECTOR X      KETCHUP, ASH     jan/17    1
                               feb/17    1
              DORKMAN, RYAN    jan/17    1
                               may/17    1
              PEROTI, MAMA     jan/17    1
                               feb/17    1
                               jun/17    1
SECTOR Y            
             JIMENEZ, PEPE     jan/17    1
             REDFIED, CHRIS    jan/17    1
             JUMILLA , MANUEl  jan/17    2
                               juL/17    2
 SECTOR U           
             KENEDY, LION      apr/17    1
             VALENTINE, JILL   jan/17    1
             KEPER, KNOR       mar/17    2
                               oct/17    2

我试图做一个动态表,但我不知道如何将信息分成4列。如何将扇区名称转换为列?

我建议先使用宏将其重新格式化为可透视格式,然后应用数据透视表以获得所需的输出

您希望此宏向下运行该列,并对每个单元格应用以下第一条规则:

如果下一个值是Name,则将当前值存储为 扇区名称 如果当前值为Name,则不执行任何操作 如果当前值不是日期,则将其存储为人名 如果当前值是日期,则向表中添加新行 以部门名称、人名和当前值作为日期 这将为每个日期放置一行,其中扇区和人名位于同一行,然后可以将其转换为数据透视表:

扇区|名称|日期 2017年1月25日第X区灰番茄酱 X区|番茄酱,火山灰| 2017年2月31日


到现在为止你都试过什么?你可以发布数据,但不能作为图像吗?如果您希望有人尝试回复您的数据,键入所有这些数据真的很烦人。在Excel 2016中打开XLS,使用Power Query,然后将结果保存为XLS。和
Sub MakePivotable(ByRef SourceColumn AS Range, ByRef Output As Range)
    Dim WorkCell As Range, OutRow As Range
    Dim Sector As String, Person As String
    Set Output = Output.Cells(1,1) 'We only want the top-left cell here
    Set SourceColumn = Intersect(SourceColumn, SourceColumn.Worksheet.UsedRange) 'Ignore unused rows

    Output.Value = "Sectors"
    Output.Offset(0,1).Value = "Name"
    Output.Offset(0,2)Value = "Date"
    OutRow = 1
    Sector = ""
    Person = ""
    For Each WorkCell In SourceColumn.Cells
        IF WorkCell.Offset(1,0).Value = "Name" Then 'Is Sector
            Sector = WorkCell.Value
        ElseIf WorkCell.Value = "Name" Then 'Do Nothing

        ElseIf Not IsDate(WorkCell.Value) Then ' Is Name
            Person = WorkCell.Value
        ElseIf 'Is Date
            'Create the row
            Output.Offset(OutRow,0).Value = Sector
            Output.Offset(OutRow,0).Value = Name
            Output.Offset(OutRow,0).Value = cDate(WorkCell.Value)
            OutRow = OutRow+1 'Move on to the next row
        End If
    Next WorkCell
End Sub