Excel VBA Power Query-如何创建仅动态返回销售';最后一分钟有几排?

Excel VBA Power Query-如何创建仅动态返回销售';最后一分钟有几排?,excel,vba,dynamic,time,intervals,Excel,Vba,Dynamic,Time,Intervals,我有一个逗号分隔的csv文件,其结构如下: 列标题: ProdDate, ProdTime, OLEDATETIME, ProdBuyPrice, ProdSellPrice, ProdBoughtQTY, ProdSoldQTY, etc 09/21/2019, 13:54:22, 43729.5801, 12.45, 12.61, 8, 9, etc. 这个CSV文件每分钟被可视化很多次(每分钟5到70次),这意味着它在销售的最后一分钟

我有一个逗号分隔的csv文件,其结构如下:

列标题:

ProdDate,   ProdTime, OLEDATETIME, ProdBuyPrice, ProdSellPrice, ProdBoughtQTY, ProdSoldQTY, etc
09/21/2019, 13:54:22, 43729.5801,  12.45,        12.61,         8,          9, etc.
这个CSV文件每分钟被可视化很多次(每分钟5到70次),这意味着它在销售的最后一分钟内可以有5到70行,那么我不能在“mantain first lines”上任意固定一个数字,只返回在最后一分钟到达的行,我以前从未使用Power Query这样做过。所以我需要一份完成的食谱来做这件事,但我的谷歌搜索到现在为止没有结果


有什么建议吗?

这是一个如何识别动态行号的示例。在本例中,我们有一个表,显示了按商店划分的水果销售额。我们想创建一个查询,返回售出香蕉的最高数量

这就是我们的数据表的样子

步骤1-从1开始添加索引列。这将分配行号。 从1添加列>索引列>

步骤2-过滤和排序数据。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute
删除所有不必要的列

过滤项目列中的香蕉

按降序对“值”列进行排序

右键单击“索引”列中的第一个值,然后选择“向下钻取”

结果 现在您有了一个动态行。您也可以选择值本身来返回销售额,而不是索引。要将此应用于其他场景,只需继续过滤和排序,直到得到所需的结果

这是如何过滤时间列中最近一分钟内发生的记录。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute
需要过滤的数据表

根据报告中列出的最后一分钟的时间筛选表。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute

这是一个如何识别动态行号的示例。在本例中,我们有一个表,显示了按商店划分的水果销售额。我们想创建一个查询,返回售出香蕉的最高数量

这就是我们的数据表的样子

步骤1-从1开始添加索引列。这将分配行号。 从1添加列>索引列>

步骤2-过滤和排序数据。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute
删除所有不必要的列

过滤项目列中的香蕉

按降序对“值”列进行排序

右键单击“索引”列中的第一个值,然后选择“向下钻取”

结果 现在您有了一个动态行。您也可以选择值本身来返回销售额,而不是索引。要将此应用于其他场景,只需继续过滤和排序,直到得到所需的结果

这是如何过滤时间列中最近一分钟内发生的记录。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute
需要过滤的数据表

根据报告中列出的最后一分钟的时间筛选表。

let
    Source = Excel.CurrentWorkbook(){[Name="t_DatesAndTimes"]}[Content],
    ChangedTypes_ColData = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Time", type time}}),
    AddCol_DateAndTime = Table.AddColumn(ChangedTypes_ColData, "Date and Time", each [Date] & [Time], type datetime),
    LatestTime_ofReport_MinusOneMinute = List.Max(AddCol_DateAndTime[Date and Time])-#duration(0,0,1,0),
    FilterRows_KeepTimesInLastMinute = Table.SelectRows(AddCol_DateAndTime, each [Date and Time] >= LatestTime_ofReport_MinusOneMinute)
in
    FilterRows_KeepTimesInLastMinute

你能把你已经有的东西贴出来吗done@Nelson布罗克斯——你能更具体地说明你想要实现什么吗?有一个关于已经发生的事情的背景故事是很好的,你已经在上面写了一些关于每分钟5到70行的新内容。。。但是现在,你可以创建一个列表,列出你想要达到的目标的要点吗。。。就像你每次都是手工操作,而时间并不是一个限制因素…?嗨@Andras Dorko,好的,我将使用另一个更熟悉的例子。外汇经纪人提供各种类型的市场数据,如t1、m1、m5、m15等。让我们将t1数据与m1数据进行比较。对于数据m1,我们有如下结构的表:标题:时间、打开、高、低、关闭、音量行1:10:38:00、1.101886、1.101955、1.101805、1.101912、5512行2:10:37:00、1.101796、1.101913、1.101773、1.101886、5585注意,在数据表m1中,每一行对应一分钟。数据表t1具有以下结构:标题:时间、Bid、Ask、BidSize、AskSize第1行:10:37:03、1.101896、1.101922、5056、5055第2行:10:37:02、1.101895、1.101918、5055、5054请注意,在表t1中,每行对应一个记号,并且表每秒可以接收超过一个记号,因此,表示一分钟的行数是可变的,取决于协商的速度。在我的例子中,就好像我只有一个表t1,想要用表t1中的数据构建一个表m1。知道表t1中每分钟的行数通常在5到70之间,例如,我可以通过返回固定数量的行(例如75或80行)来进行查询,并找到起始值high、low、,关闭和音量对应的1分钟,从而建立一个表m1。你能发布你已经拥有的吗done@Nelson布罗克斯——你能更具体地说明你想要实现什么吗?有一个关于已经发生的事情的背景故事是很好的,你已经在上面写了一些关于每分钟5到70行的新内容。。。但是现在,你可以创建一个列表,列出你想要达到的目标的要点吗。。。就像你每次都是手工操作,而时间并不是一个限制因素…?嗨@Andras Dorko,好的,我将使用另一个更熟悉的例子。外汇经纪人提供各种类型的市场数据,如t1、m1、m5、m15等。让我们将t1数据与m1数据进行比较。对于数据m1,我们有如下结构的表:标题:时间、打开、高、低、关闭、音量行1:10:38:00、1.101886、1.101955、1.101805、1.101912、5512行2:10:37:00、1.101796、1.101913、1.101773、1.101886、5585注意,在数据表m1中,每一行对应一分钟。数据表t1具有以下结构:标题:Time、Bid、Ask、BidSize、AskSize行1:10:37:03、1.101896、1.10