【问题标题】:Series based on row and column combination基于行列组合的系列
【发布时间】:2015-10-07 06:57:40
【问题描述】:

我有一个包含如下行和列的 Excel:

我需要在 Excel 中构建一个如下所示的系列,其中包含两列:

我有一个庞大的数据集,其中行是日期,列是半小时内的数据。

哪种方法最好?

【问题讨论】:

  • 恐怕我不太明白你的问题?你的组合系列中的data 会发生什么?系列中包含 a、b、c 和 1、2、3 的规则是什么?
  • 获得系列组合后,我可以进行 vlookup 来获取数据。没有包含数据的规则。这只是我必须以这种格式上传数据的数据
  • 我在我的问题中添加了另一个带有屏幕截图的示例
  • 所以基本上,你有 n 行和 m 列,你的目标是有一个长度为 m 的列表* n,包含行标题和列标题的所有组合?
  • 正是我想要一个包含所有行和列组合的列表

标签: excel excel-formula series


【解决方案1】:

我建议使用INDIRECT 函数:

当你想要有行标签的列中,输入这个公式:

=INDIRECT("R" & MOD(ROW()-1, COUNTA(A:A))+2 & "C1",FALSE)

这里的 A:A 是指存储行标签的列,+2 是带有标签的第一行的偏移量。

在您想要列标签的列中,输入:

=INDIRECT("R1C" & ROUNDDOWN((ROW()-1)/COUNTA($B$1:$D$1),0)+2,FALSE)

这里 $B$1:$D$1 是指带有列标签的范围,+2 再次偏移到第一个列标签。

【讨论】:

    【解决方案2】:

    假设您的数据在C7:F12范围内

    我们需要三个字段来显示结果系列:RowColData

    行:在单元格H7中输入此公式并复制到最后一条记录:

    =IF(EXACT(H6,H$6),1,
    IF(EXACT($I7,CHAR(133)),"",
    IF($I7=1,SUM(1,H6),H6)))
    

    Col:在单元格I7中输入这个公式并复制到最后一条记录:

    =IF(EXACT(I6,I$6),1,
    IF(EXACT(I6,CHAR(133)),CHAR(133),
    IF(I6=COLUMNS($C$7:$F$12),
    IF(H6=ROWS($C$7:$F$12),CHAR(133),1),
    SUM(1,I6))))
    

    数据:在单元格J7输入这个公式并复制到最后一条记录:

    =IF(EXACT($I7,CHAR(133)),"",
    INDEX($C$7:$F$12,$H7,$I7))
    

    【讨论】:

      【解决方案3】:

      以下将产生您的结果,但数组公式会影响计算滞后,具体取决于原始数据矩阵中数据的行数和列数。

          

      A10中的数组公式¹是,

      =IFERROR(INDEX(A$2:A$6, MATCH(0, IF(COUNTIF(A$9:A9, A$2:A$6&"")<COUNT($1:$1), 0, 1), 0)), "")
      

      B10中的标准公式是,

      =IF(LEN(A10), INDEX($B$1:INDEX($1:$1, MATCH(1E+99,$1:$1 )), , COUNTIF(A$10:A10, A10)), "")
      

      C10 中的数据检索是通过,

      =INDEX(A:J,MATCH(A10,A:A,0),MATCH(B10,$1:$1,0))
      

      根据需要填写。


      ¹ 数组公式需要使用 Ctrl+Shift+Enter↵ 完成。一旦正确输入第一个单元格,它们就可以像任何其他公式一样被填充或向下或向右复制。尝试减少对更接近代表实际数据范围的范围的全列引用。数组公式以对数方式消耗计算周期,因此最好将引用范围缩小到最小值。更多信息请参见Guidelines and examples of array formulas

      【讨论】:

      • 顺便说一句,第 1 行的时间是实时的,被视为数字。如果它们是看起来像时间的文本(即数字),那么COUNTA function 将是比COUNT function 更好的选择。
      【解决方案4】:

      根据用户提供的示例数据发布修改后的答案(留下之前的答案,因为它可能对其他用户有用)

      假设您的数据在C6:K11范围内

      我们需要四个字段来显示结果系列:RowCol、'DateandTime`

      行:在单元格M7中输入此公式并复制到最后一条记录:

      =IF(EXACT(M6,M$6),1,
      IF(EXACT($N7,CHAR(133)),"",
      IF($N7=1,SUM(1,M6),M6)))
      

      Col:在单元格N7中输入这个公式并复制到最后一条记录:

      =IF(EXACT(N6,N$6),1,
      IF(EXACT(N6,CHAR(133)),CHAR(133),
      IF(N6=COLUMNS($C$6:$K$6),
      IF(M6=ROWS($B$7:$B$11),CHAR(133),1),
      SUM(1,N6))))
      

      日期:在单元格O7中输入此公式并复制到最后一条记录:

      =IF(EXACT($N7,CHAR(133)),"",
      INDEX($B$7:$B$11,$M7,0))
      

      时间:在单元格P7输入这个公式并复制到最后一条记录:

      =IF(EXACT($N7,CHAR(133)),"",
      INDEX($C$6:$K$6,0,$N7))
      

      RowCol 字段可以隐藏

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-09
        • 1970-01-01
        • 2020-01-27
        • 2019-11-21
        • 1970-01-01
        • 2017-06-11
        • 2021-04-09
        相关资源
        最近更新 更多