如何把Excel表中的数据按时间再分类地址合并

如何把Excel表中的数据按时间再分类地址合并,从表1的格式变为表2的格式

步骤1:如下图,选择A2:A7,按F5打开定位对话框,选择"定位条件"--"空值",你会发现空单元格被选中

接着按=A2,按Ctrl+Enter,填满空格。

步骤2:选择这片区域,"插入"--"透视表",照图把字段拖进对应区域。再进行调整,在数据透视表工具里,去掉分类汇总、总计。报表布局选"表格形式",空行选"每个项目后插入空行",如下图:

步骤3:全选数据透视表,复制,以值的方式粘贴到新工作表中,如图:

这时日期是数值形式显示,别担心,更改为日期格式即可。接下来,我编写了一段代码,你确保Excel启用宏,然后按ALT+F11,进入编辑器,选择"插入"--"模块",把代码贴进去

Sub FillGe()
    Dim GeRng As Range
    Dim DateRng As Range
    Dim cell As Range
    Dim GeCount As Long
    Dim TempString As String
    Dim k As Long
    k = 1
    
    Set GeRng = Range("A3")
    Set DateRng = Range("C2")
    
    Do Until IsEmpty(GeRng)
        GeCount = Range(GeRng.Offset(0, 1), GeRng.Offset(0, 1).End(xlDown)).Count
        Do Until IsEmpty(DateRng)
            For Each cell In DateRng.Offset(GeRng.Row - DateRng.Row, 0).Resize(GeCount, 1)
                If cell.Value = 1 Then
                    TempString = TempString & "," & cell.Offset(0, -k)
                End If
            Next cell
            On Error Resume Next
            DateRng.Offset(GeRng.Row - DateRng.Row + GeCount, 0) = Right(TempString, Len(TempString) - 1)
            On Error GoTo 0
            
            TempString = ""
            Set DateRng = DateRng.Offset(0, 1)
            k = k + 1
        Loop
        Set GeRng = GeRng.Offset(GeCount + 1, 0)
        Set DateRng = Range("C2")
        k = 1
        GeRng.Offset(-1, 0).Value = GeRng.Offset(-GeCount - 1, 0).Value
    Loop
End Sub

按F5运行,得到效果如下图:

步骤4,这时应该比较简单了,对表格筛选,然后B列选择地理位置和空,然后修改日期格式,得到最终结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-26

介绍个很方便的方法,这个方法EXCEL本身就有这个功能

    把姓名列全部填充

    CTRL+G   定位条件---空值  =  确定

    菜单栏---插入---数据透视表

    字段依次按顺序排列:姓名、日期、地理位置

    设计项设置:分类汇总---不显示分类汇总;报表布局---以表格形式显示

本回答被网友采纳
相似回答