Excel-将多余的列更改为行

时间:2018-11-21 16:56:24

标签: excel

我得到了一个文件,其中包含各种不同产品的编号以及每月返还多少。

Raw Data

为了使数据更整洁,我想按天平均分配数据。我已经在Excel中编写了一些公式来执行此操作,但是现在每个月我都有很多列。

Transformed Data

我希望每个日期和产品组合都具有一行,而不是具有相同的行数,而要对返回的产品使用一列,对于返回的值使用一列。 I have turned my progress into a Google Sheet here

Final Data

有人可以帮我填写最后的表格吗?它将需要重复日期和产品乘以月中天数的次数,然后将正确的值放在接下来的两列中。

1 个答案:

答案 0 :(得分:0)

此解决方案使用数组公式。它可能不是最好的解决方案,但是它可以工作(尽管非常慢)。我首先创建了一个汇总表(如果需要,您可以解决此步骤,但是我认为它可以使解决方案更简洁):

enter image description here

A:D列是您的初始产品表。 F列是每个日期的列表,可以手动创建或使用公式创建。 G列为=COUNTIF(A:A,F2)

移至新工作表:

enter image description here

A列是该月每个产品重复X次的日期的列表。 我首先手动编写了“ 6/1/2018”几次,然后切换到此公式,该公式查找给定月份的产品计数,并检查日期是否已经重复了多次。如果有的话,它又增加了一天的时间。否则,它会不断重复:

=IF(COUNTIF(A$2:A6,A6)=INDEX(Sheet3!G:G,MATCH(DATE(YEAR(A6),MONTH(A6),1),Sheet3!F:F,0)),A6+1,A6)

B列通过查看到目前为止给定日期已重复多少次来查找产品:

=INDIRECT("Sheet3!B"&MATCH(DATE(YEAR(A2),MONTH(A2),1),Sheet3!A:A,0)+COUNTIF(A$2:A2,A2)-1)

C列是一个数组公式(使用Ctrl + Shift + Enter提交),该公式将获取总乘积并除以每个月的天数:

=INDEX(Sheet3!C:C,MATCH(1,INDEX((B2=Sheet3!B:B)*(DATE(YEAR(A2),MONTH(A2),1)=Sheet3!A:A),0,1),0))/DAY(EOMONTH(A2,0))

D列与C相同,但获取总产品价值:

=INDEX(Sheet3!C:C,MATCH(1,INDEX((B2=Sheet3!B:B)*(DATE(YEAR(A2),MONTH(A2),1)=Sheet3!A:A),0,1),0))/DAY(EOMONTH(A2,0))

我意识到这些可能很难遵循。如果您给我您的电子邮件地址,我很乐意将工作簿发送给您。另外,其他人可能更容易实现解决方案。

谢谢!