我在Excel工作表中有一些数据,如产品,价格和间隔(三个日期:产品激活,产品停用,报价有效性)。
我必须根据价格的分析周来细分数据。
例如:
Prod1 | Prices1 | 2012/08/01 | 2012/09/08
Prod2 | Prices2 | 2012/08/14 | 2012/10/16
在:
week 2012/07/30-2012/08/05 | Prod1 | Prices1
week 2012/08/06-2012/08/12 | Prod1 | Prices1
week 2012/08/13-2012/08/19 | Prod1 | Prices1
week 2012/08/13-2012/08/19 | Prod2 | Prices2
week 2012/08/20-2012/08/26 | Prod1 | Prices1
week 2012/08/20-2012/08/26 | Prod2 | Prices2
week 2012/08/27-2012/09/02 | Prod1 | Prices1
week 2012/08/27-2012/09/02 | Prod2 | Prices2
week 2012/09/03-2012/09/09 | Prod1 | Prices1
week 2012/09/03-2012/09/09 | Prod2 | Prices2
week 2012/09/10-2012/09/16 | Prod2 | Prices2
我该怎么办?
修改
我在想,也许最好不要按周计算,而是按天计算,因为我可能会重叠日期。然后我可以在新数据上创建一个数据透视表。
答案 0 :(得分:1)
我认为最直观的方法就是使用VBA。
如果您按照以下方式整理数据:
然后你可以运行这个宏,它会分出周数:
Sub QuestionMacro()
Dim wbk As Workbook
Set wbk = ThisWorkbook
Dim ws As Worksheet
Set ws = wbk.Sheets(1)
Dim cell As Range
Dim DataRange As Range
Dim RowIndex As Range
Set DataRange = ws.Range("A1:D10000")
For Each RowIndex In DataRange.Rows
If RowIndex.Cells(1, 5).Value < RowIndex.Cells(1, 6).Value Then
RowIndex.EntireRow.Copy
RowIndex.EntireRow.Insert
RowIndex.Cells(1, 5).Value = RowIndex.Cells(1, 5).Value + 1
End If
Next RowIndex
End Sub
你应该得到这样的东西:
然后你可以使用拆分周数,vlookup和这样的表来检索适当的实际日期:
Jook的回应中提到的周数公式是:
=WEEKNUM(C2,2)
等
以下是带标题的开始数据(必须删除才能使宏正常工作:
解决问题可能是一种过于复杂和混乱的方式,但它可以解决您的问题。
您应该能够轻松达到以下目的:
如果您需要有关如何使用VLookup的更多信息,请告诉我。祝你好运。
修改强>
如果您想每天获得价格和产品(我个人更喜欢),您可以像这样调整上面的宏(假设您的日期是实际数字):
Sub QuestionMacroPerDayBasis()
Dim wbk As Workbook
Set wbk = ThisWorkbook
Dim ws As Worksheet
Set ws = wbk.Sheets(1)
Dim cell As Range
Dim DataRange As Range
Dim RowIndex As Range
Set DataRange = ws.Range("A1:D10000")
For Each RowIndex In DataRange.Rows
If RowIndex.Cells(1, 3).Value < RowIndex.Cells(1, 4).Value Then
RowIndex.EntireRow.Copy
RowIndex.EntireRow.Insert
RowIndex.Cells(1, 3).Value = RowIndex.Cells(1, 3).Value + 1
End If
Next RowIndex
End Sub
答案 1 :(得分:0)
为您的数据添加新列:
WEEKNUM(A1,2)
或德语:
KALENDERWOCHE(A1;2)
A1是日期,2是从星期一开始的一周
现在您可以使用VLOOKUP或过滤器来选择数据。
这也在这里被问到:
How to convert date to week number
编辑:
有一点误会 - 我正致力于改善...
好的,再看一遍,它有点复杂,因为你想从你的小数据集派生到更大的数据集。您最终将获得产品的多行,以及一周内的多行。
我仍然认为WEEKNUM在这里可以提供帮助......如果我找到更多,我会重复。
修改的
有了这个,您可以从特定日期开始减少几个星期的范围。
C21=Date
G21=C$21+(ROW($G21)-ROW(G$21))*14
H21=G21+7
这应该做其余的事情,但你必须找出标准部分的正确格式 - 可以使用“&gt; = D1”或类似的东西 - 就像在条件格式中一样。
F21=SUMIFS(B:B,C:C,G21)
这里的价格在col B中,date-start将在C中,并将与我们从G21的给定日期进行比较。我最初的想法是:
F21=SUMIFS(B:B,C:C,">=G21",D:D,"<=H21",A:A,"="Product1"")
但正如我所说,标准中存在一些错误。希望你能得到这个想法。