You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerApps DataTable函数优化:过滤零值行并添加总计行

PowerApps DataTable 优化方案

一、过滤掉「Recorded Time」为0的行

直接在现有Filter函数中添加过滤条件即可(RemoveIf是用于修改数据源的函数,不适合在DataTable的Items属性中使用,这也是你之前报错的原因)。修改后的Items公式如下:

Sort(
  Filter(
    October_Timesheets_1D,
    WinTeam_ID = employee_search.Text &&
    DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate &&
    DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate &&
    'Recorded Time' <> 0  // 新增条件:排除记录时间为0的行
  ),
  Date, SortOrder.Descending
)

二、添加「Recorded Time」列总计行

PowerApps的DataTable控件没有内置总计行功能,可通过以下两种方式实现:

方式1:使用集合(推荐,性能更优)

  1. 在屏幕的OnVisible属性中,将过滤并排序后的数据集存入集合:
ClearCollect(
  FilteredTimesheets,
  Sort(
    Filter(
      October_Timesheets_1D,
      WinTeam_ID = employee_search.Text &&
      DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate &&
      DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate &&
      'Recorded Time' <> 0
    ),
    Date, SortOrder.Descending
  )
)
  1. 将DataTable的Items属性改为FilteredTimesheets。
  2. 在DataTable下方添加一个Label控件,设置其Text属性为:
"Total Hours: " & Sum(FilteredTimesheets, 'Recorded Time')

方式2:直接计算(无需集合)

如果不想用集合,可直接在Label中写计算逻辑,Label的Text属性设置为:

"Total Hours: " & Sum(
  Filter(
    October_Timesheets_1D,
    WinTeam_ID = employee_search.Text &&
    DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate &&
    DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate &&
    'Recorded Time' <> 0
  ),
  'Recorded Time'
)

内容的提问来源于stack exchange,提问作者next_Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:33:26