[英]How to extract months with data and find n-th value as starting point and n-th value as ending point in Excel Power Query, maybe VBA
我有一个由日期/时间、压力和自定义列组成的数据集。 这代表了压力随时间的数据,我想知道我的起点(5 分钟后)和一个月内最后一个值(行)之前的终点。 为了帮助您,通常测量大约需要 30-40 分钟,您可以在此示例中看到。 因此,这意味着数据量可能会有所不同。
时间列使用以下公式计算:
=([@[Date/Time]]-I5)*1440+L5
该数据集表示整个数据和所有带有值的月份,我需要使用这些起始/结束点分隔(过滤)月份,如屏幕截图所示。 我经常使用 Power Query 来处理数据,但也许还有另一种方法可以获取这些值……并在可能的情况下使它们动态化以用于未来的数据。
我还将上传带有整个数据集(所有月份)的虚拟工作簿,如果需要您的信息和测试,可以使用月份过滤表。
根据您共享的工作簿和您所写的内容,似乎对于任何给定的月份,您
算法
monthYear
monthYear
如果您只想查看给定月份的结果,可以在生成的 Excel 表中过滤结果。
M代码
请阅读评论并检查应用步骤以更好地理解算法
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date/Time", type datetime}, {"P7 [mbar]", Int64.Type}}),
//add month/year column for grouping
#"Added Custom" = Table.AddColumn(#"Changed Type", "month Year",
each Number.ToText(Date.Month([#"Date/Time"]),"00") & Number.ToText(Date.Year([#"Date/Time"]),"0000")),
#"Grouped Rows" = Table.Group(#"Added Custom", {"month Year"}, {
//elapsed minutes column
{"Elapsed Minutes", (x)=> let
//remove first and last rows from table
t=Table.RemoveColumns(Table.RemoveFirstN(Table.RemoveLastN(x)),"month Year"),
//add a column with the elapsed minutes
TableToFilter = Table.FromColumns(
Table.ToColumns(t)
& {List.Generate(
()=>[em=null, idx=0],
each [idx]< Table.RowCount(t),
each [em=Duration.TotalMinutes(t[#"Date/Time"]{[idx]+1} - t[#"Date/Time"]{0}), idx=[idx]+1],
each [em])}, type table[#"Date/Time"=datetime, #"P7 [mbar]"=number, elapsed=number]),
//filter for last entry (which would be next to last in the month
maxMinute = List.Max(TableToFilter[elapsed]),
//filter for first entry in the 5th minute
fifthMinute = List.Select(TableToFilter[elapsed], each Number.IntegerDivide(_,1)=5){0},
//select the 5th minute and the last row
FilteredTable = Table.SelectRows(TableToFilter, each [elapsed]=fifthMinute or [elapsed]=maxMinute)
in FilteredTable,type table[#"Date/Time"=datetime, #"P7 [mbar]"=number, elapsed=number]}
}),
//remove uneeded column and expand the others
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"month Year"}),
#"Expanded Elapsed Minutes" = Table.ExpandTableColumn(#"Removed Columns", "Elapsed Minutes", {"Date/Time", "P7 [mbar]"}, {"Date/Time", "P7 [mbar]"})
in
#"Expanded Elapsed Minutes"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.