【问题标题】:Automatically merge two irregular time series in ExcelExcel中自动合并两个不规则时间序列
【发布时间】:2014-05-09 12:16:31
【问题描述】:

情况如下:

  • 以两个源数据系列向我提供数据。
  • 两个源数据系列都有相同的列,其中一个包含日期。
  • 每一行都是唯一的,尽管可能有多行具有相同的日期值。
  • 我需要创建一个合并数据系列,其中包含两个源数据系列中按日期排序的所有行。
  • 源系列需要保留在电子表格中自己的列中,因此我们不能每次都简单地将两个系列复制并粘贴到一个系列中并进行排序。
  • 我们需要一些解决方案,在输入源系列的数据后自动生成合并的数据系列。

这里的closestquestionsI'vefound似乎都依赖于R,但是在Excel中有没有办法做到这一点?

编辑:这是一些简化的示例数据(实际数据有更多列)和所需的结果:

数据源一:

Type    Date       Num  Name     Split        Amount
Deposit 01/01/2014 wire John Doe Town Bank     $1234.56
Deposit 01/06/2014 wire Jane Doe Village Bank  $3434.65
Check   02/24/2014 clr  Jim Doe  City Bank    -$4000.00

数据源2:

Type    Date       Num  Name     Split        Amount
Deposit 12/11/2013 45   John Doe Town Bank      -$25.56
Deposit 12/25/2013 wire Jane Doe Village Bank   $334.65
Deposit 01/11/2014 45   John Doe Town Bank      -$25.56
Deposit 01/14/2014 wire Jane Doe Village Bank   $108.00
Deposit 01/27/2014 wire Jane Doe Village Bank   $314.15
Deposit 02/11/2014 45   John Doe Town Bank      -$25.56
Deposit 02/13/2014 wire Jane Doe Village Bank     $2.15

想要的结果:

Type    Date       Num  Name     Split        Amount
Deposit 12/11/2013 45   John Doe Town Bank      -$25.56
Deposit 12/25/2013 wire Jane Doe Village Bank   $334.65
Deposit 01/01/2014 wire John Doe Town Bank     $1234.56
Deposit 01/06/2014 wire Jane Doe Village Bank  $3434.65
Deposit 01/11/2014 45   John Doe Town Bank      -$25.56
Deposit 01/14/2014 wire Jane Doe Village Bank   $108.00
Deposit 01/27/2014 wire Jane Doe Village Bank   $314.15
Deposit 02/11/2014 45   John Doe Town Bank      -$25.56
Deposit 02/13/2014 wire Jane Doe Village Bank     $2.15
Check   02/24/2014 clr  Jim Doe  City Bank    -$4000.00

【问题讨论】:

  • 不清楚你说的“源系列需要单独保留”是什么意思
  • 至少提供一个样本数据集 - 否则您的问题很可能会被关闭。
  • @TimWilliams 这两个源系列需要包含在我们收到的电子表格中。
  • @brettdj 数据集已添加。
  • 抱歉,“我们收到时已包含在电子表格中”仍不清楚。究竟是什么阻止您将两个列表复制/粘贴在一起,然后对加入的列表进行排序?您的意思是当新行添加到任一源时,组合列表需要使用新行自动更新?

标签: excel vba


【解决方案1】:

这样的事情应该可以工作:

Sub Tester()

    Dim rng1 As Range, rng2 As Range, cr As Range

    Set rng1 = Worksheets("Sheet1").Range("A1").CurrentRegion
    Set rng1 = rng1.Offset(1, 0).Resize(rng1.Rows.Count - 1) 'omit headers

    Set rng2 = Worksheets("Sheet2").Range("A1").CurrentRegion
    Set rng2 = rng2.Offset(1, 0).Resize(rng2.Rows.Count - 1) 'omit headers

    With Worksheets("Summary")

        Set cr = .Range("A1").CurrentRegion

        cr.Offset(1, 0).ClearContents 'clear existing data
        rng1.Copy .Range("A2")
        rng2.Copy .Range("A2").Offset(rng1.Rows.Count)

        With .Sort
            .SortFields.Clear
            .SortFields.Add Key:=cr.Columns(2), _
                             SortOn:=xlSortOnValues, _
                             Order:=xlAscending, _
                             DataOption:=xlSortNormal
            .SetRange cr
            .Header = xlYes
            .MatchCase = False
            .Apply
        End With

    End With
End Sub

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 2013-11-07
    • 2015-09-27
    • 2020-05-07
    • 2020-02-01
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多