首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在金额不为0的当前行中找到日期之前的最后一个日期?

在金额不为0的当前行中找到日期之前的最后一个日期,可以通过以下步骤实现:

  1. 遍历当前行中的每个单元格,从当前位置向前搜索,直到找到金额不为0的单元格。
  2. 一旦找到金额不为0的单元格,记录该单元格的日期。
  3. 继续向前搜索,直到找到日期之前的最后一个日期,即找到金额不为0的当前行中日期之前的最后一个日期。

以下是一个示例代码,用于在Excel表格中查找金额不为0的当前行中日期之前的最后一个日期:

代码语言:txt
复制
import openpyxl

def find_last_date(sheet, current_row):
    last_date = None
    for col in range(sheet.min_column, sheet.max_column + 1):
        cell = sheet.cell(row=current_row, column=col)
        if cell.value != 0:
            last_date = sheet.cell(row=1, column=col-1).value
            break
    return last_date

# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active

# 假设当前行为第2行
current_row = 2

# 查找金额不为0的当前行中日期之前的最后一个日期
last_date = find_last_date(sheet, current_row)

if last_date:
    print("找到日期之前的最后一个日期:", last_date)
else:
    print("未找到日期之前的最后一个日期")

# 关闭Excel文件
workbook.close()

请注意,以上代码使用了openpyxl库来处理Excel文件,你可以根据实际情况选择适合的库进行处理。此外,代码中的example.xlsx是一个示例Excel文件名,你需要根据实际情况修改为你要处理的文件名。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

行上下文筛选函数Earlier含义及用法

返回 标量——指定列的当前行值 C. 注意事项 只有存在表层级,才会起作用,如果不存在层级则会出错。 不建议使用,可以使用var变量赋值给与替代。 D. 作用 返回之前层级列数值。...(相当于固定一个之前层级数值) E. 案例 ? 我们要添加一列上一天金额Excel里面我们很容易,直接相对引用上一行金额单元格就可以。...Filter('表1','表1'[时间]='表1'[时间]-1)但是如果是这样表达式肯定是不会筛选出结果,所以这里涉及到2个表,一个是当前表,一个之前表,之前表我们就需要用EARLIER来体现。...500 筛选日期比2019/5/5小一天表 时间为2019/5/4表 2019/5/6 600 筛选日期比2019/5/6小一天表 时间为2019/5/5最后一天筛选出来结果就是下图这样...e_day='表1'[时间] return Calculate(Sum('表1'[金额]),Filter('表1','表1'[时间]=e_day-1)) e_day代表之前日期 请点个赞,转发分享给更多的人

1.7K10

Power Pivot实现Excel中Vlookup函数模糊查找功能

返回 表——包含单列或者单行最后一个值 C. 注意事项 表达式是一个逻辑比较 通常和calculate进行搭配组合 另外可以类似Max函数结果返回 D. 作用 返回表达式不为最后一个值。...返回列表中最大值 E. 案例 ? 1. 返回第一个不为数据 LastNonBlank:=LASTNONBLANK('表'[日期],"") 返回结果:2018/9/7。...返回日期小于2018/9/6一个不为值 LastNonBlank:=LASTNONBLANK('表'[日期]<date(2018,9,6),"") 返回结果:2018/9/4,因为第一个参数column...这里空值作为0来处理 实现Excel中Vlookup函数模糊查找功能。 分级表: ? 数据表: ? 通过分级表我们来确定考试成绩归属级别,这个是一个经典Vlookup函数应用。...这个比较结果就是0,60两个值单列,然后通过LastNonblank获取最大值,也就是60。 返回结果如下 ? 2.

2.9K10
  • Power Pivot智能日期运用——连续时间(2)

    返回 表——单列时间数据表 C. 注意事项 返回结果必须是参数1中范围 如果起始日期为空值,则默认日期列中最早一个值为起始日期;如果结束日期为空值,则默认日期列中最后一个值。 D....作用 返回指定日期之间日期列 E....一个整数数字 第3参数 Interval 时间类型(年季月) B....('日历'[Date],1,MONTH)) 往后偏移1年销售额:=CALCULATE([销售金额],PARALLELPERIOD('日历'[Date],1,YEAR)) 计算当前行上下文日期所属月份上个月销售金额...计算当前行上下文日期所属月份下个月销售金额。 计算当前行上下文日期所属年份下一年销售金额。 ? 请点个赞,转发分享给更多的人。

    88420

    阅读圣经丨变量引起上下文

    就是《变量(二)》结尾时候,白茶曾经说过,按照我们中国式报表需求,BOSS关注不仅仅是第一次,而是每一次成交日,以及每一次成交金额,那么该如何进行呢?...结合之前@嘿神说,迭代器激活行上下文进行取值。 在上面的代码中,计算结果有四个,但是表格中没有当前日期上下文。这就导致度量值无法匹配相关数据,而是只能呈现最大数据。...DQ开头用IF是剔除没有销售额日期,使其不显示;CALCULATE是为了重新定义当前环境;最后利用FILTER筛选出日期这一列中小于最后一笔成交日期,并且销售额不为日期,即上一笔成交日。...最终,就达到了中国式报表需求,每一笔成交日,每一笔成交花费,再利用IF判断添加一个销售金额,妥妥滴达到我们期望效果。 * * * 小伙伴们❤GET了么?...白茶会不定期分享一些函数卡片 (文件知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI初学者。 [1240]

    36320

    5 大用例设计笔试大题,附超详细解析

    答案解析: 1 题答案: 先输入符合要求数据,进行正常注册情况验证。进行数据设计时考虑边界值情况。...报表样式参考图,注意违规笔数合计和冲红笔数合计必须放在上面(现场要求) 查询逻辑:查询收银员合计表入账日期开始和结束日期范围内违规笔数或冲红笔数 >0 记录,部门收银员汇总违规笔数、违规金额、冲红笔数...、冲红金额 查询字段显示:部门编码、部门名称、收银员编码、收银员名称、违规笔数、违规金额、冲红笔数、金额。...,分页控件操作确认是否正常 15.查询页面排版是否按照需求设计显示 5.计划书转成 PDF 文档 项目:计划书转成 PDF **背景:**基金委员会负责科研基金发放,批准申请项目后,需要申请基金人员提交一个有关项目计划文件...,且不为重大项目——转成后 pdf 包含:简表 pdf 中为简表内容、正文 pdf 中为正文文件内容 在线方式编写,简表 pdf 中编写简表,无正文文件,且不为重大项目——转成后 pdf 包含:简表

    1.1K30

    Pandas 快速入门(二)

    本文例子需要一些特殊设置,具体可以参考 Pandas快速入门(一) 数据清理和转换 我们进行数据处理时,拿到数据可能不符合我们要求。...有很多种情况,包括部分数据缺失,一些数据格式不正确,一些数据标注问题等等。对于这些数据,我们开始分析之前必须进行必要整理、清理。...,有时候不能够分析之前就发现数据中存在问题,往往是分析进行到一半,突然发现有的数据格式或者质量有问题,对于这种情况,不知道大家有没有处理办法,让我们提前发现数据问题?...如果是从文件读入数据,可以使用 parse_dates参数来对日期进行解析。 对于日期索引,可以根据日期、月份、年份、日期范围来方便选择数据。...,摘要,证券名称,合同编号,成交数量,成交均价,成交金额,手续费,印花税,其他杂费,发生金额,股东帐户,备注,操作,证券代码 2017-12-01,基金资金拨出,天天发1,0,0,1.0,0,0.0,0.0,0.0

    1.2K20

    大数据学习之数据仓库代码题总结上

    其中,x 等于 order by 子句中指定的当前行值 NTILE() 已排序行划分为大小尽可能相等指定数量排名组,并返回给定行所在排名。...FIRST_VALUE 取分组内排序后,截止到当前行,第一个值 LAST_VALUE 取分组内排序后,截止到当前行最后一个值 二、笔试题考查 2.1、复购/留存率统计问题 新增用户留存率=新增用户中登录用户数...请编写一条 Hive SQL 查询,计算每个产品每月销售额累计百分比。输出结果应包含销售日期、产品ID、销售金额和对应累计百分比。...(lead_order_date) 下一个订单订单数量 (lead_quantity) 上一个订单订单日期 (lag_order_date) 上一个订单订单数量 (lag_quantity) *...,完成自助归因平台建设,涉及归因、回传优化、回传等功能,支撑日投放金额近千万,同时RTA/RTB也有深度实践。

    20010

    Power Pivot中如何计算具有相同日期数据移动平均?

    (四) 如何计算具有相同日期数据移动平均? 数据表——表1 ? 效果 ? 1. 解题思路 具有相同日期数据,实际上也就是把数据进行汇总求和后再进行平均值计算。其余和之前写法一致。...添加辅助排名度量 汇总金额:=SumX(RelatedTable('表1'), '表1'[金额]) 解释:通过日期关联,把对应日期金额进行汇总求和。 B....Date]) ) ) 解释:这里需要2个条件,除了日历条件,还需要添加一个日期是否有值条件,也就是汇总金额这里需要为非空。...('日历'), [排名]>=pm-5 && [排名]<pm), //筛选出符合要求日期区间表 [汇总金额] ),...我们来看下和之前比差异性在哪里? ? ? 满足计算条件增加1项,即金额不为空。 是通过日历表(唯一值)进行汇总计算,而不是原表。 计算平均值,是经过汇总后金额,而不单纯是原来表中金额

    3K10

    图解面试题:如何实现精细化运营?

    R值=现在(2020-01-30)- 每个用户最后一次购物日期 每个用户最后一次购物日期,涉及到“每个问题“要想到《猴子 从零学会SQL》里讲过用分组汇总来实现。...根据“用户编号”分组,然后汇总(最后一次购买日期,就是找到日期最大值,用汇总函数max) select 用户编号, max(用户活跃日期) as 最后一次购物日期 from a group by a...然后就可以分析出R值=现在(2020-01-30)- 每个用户最后一次购物日期 select 用户编号,('2020-01-30'-b.最后一次购物日期) as 最近一次消费时间间隔R from b;...select 用户编号,sum(消费金额) as 总消费金额M from a where datediff('2020-01-30',用户活跃日期)<=30 group by 用户编号; 至此,我们已经获得了每一个用户...接下来需要将每一个用户【R分、F分、M分】与【R分平均、F分平均、M分平均值】做比较,就可知道每一个用户【最近一次消费时间间隔(R)、消费频率(F)、消费金额(M)】三个指标中是否高于平均水平,从而帮助后续对用户进行分类

    84410

    PowerBI系列之入门案例动态销售报告

    三、合并销售数据 没有PowerBI之前我们Excel中合并数据时主要时编写宏来处理数据,效率比较低。...现在我们PowerBI中只需要编写一个公式实现 1、点击删除不需要列,只保留Name和Content.选择这两列然后再删除列中。...6、先复制销售单编号列,拆分销售订单编号,提取日期列。日期销售报表中起到很大作用,可以在后续中分析趋势。可以转换选项卡中找到拆分列 ?...将第一列设置为销售日期 ? 8、选中日期列,添加年,季度,月日期列 ? 9、导入店铺信息和销售目标数据,可以看到PowerQuery中有三个查询信息 ?...我们可以根据公司风格来调整主题。大家有没有觉得很方便了? 本文示例地址:动态销售报告

    5.4K12

    如何在ABAP中实现账单详情查询功能

    账单详情查询功能函数 函数语法:ABAP 开发工具:SAP GUI 740 基本逻辑: 通过账单编号billid取数,仅传输应收账单日期小于等于次月最后一天账单信息 功能函数实现代码如下,很简单函数...,主要是实现三块逻辑: 调用系统内部函数,获取当前操作时间次月最后一天值; 按照功能说明书要求进行取值; 做一个筛选判断,查找符合基本逻辑信息; 补充:账单信息传输通过PO接口发送实现,接口METHOD...*声明获取次月最后一天函数相关变量 DATA: lv_months LIKE p0001-begda, "指系统当前时间一个月 lv_days LIKE sy-datum..."指该月最后一天日期 *定义内表 ///可以用另一种方式调用-type 已有表或结构 TYPES ty_bill TYPE ZSSFI0120....*传输应收日期 ZSTYC0002-PAYDATE 小于等于次月最后一天账单 *返回一个消息,判断取数是否成功 * IF sy-subrc NE 0.

    90530

    阅读圣经丨变量(二)

    [1240] 这是群里面的讨论文件,数据不是特别的复杂,喜欢动手小伙伴可以按照图片自己搞一份。(@飞天篮球猪大佬当时出题目是:求出第一笔成交日期,以及第一笔成交时花费金额。)...将数据导入PowerBI中,如下图: [1240] 按照白茶理解,第一笔产生销售额日期就是第一笔成交日;那么该日期之前所有花费就是累计花费。...说一下,之前讲《聚合与迭代》时候曾经提到过MIN这个函数可以对数值、文本类生效,本次就用它。(如果求最后日期可以使用MAX。)...求累计消费时候,白茶用是分开写办法,代码如下: 分开写 = CALCULATE ( SUM ( Sheet1[花费] ), FILTER ( Sheet1, 'Sheet1'[日期] <= [...白茶会不定期分享一些函数卡片 (文件知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI初学者。 [1240]

    33930

    如何实现不同时期间汇率差导致收益变动?

    有没有更方便方法来让我们看到结果?我们来看下具体案例。...我们有2个表,一个是汇率表,根据每天实际汇率来进行登记获取(可以通过PQ自动网抓实现);另外一个是我们销售日期汇总表(通过PQ汇总或者网抓获取)。...我们有2个表,一个是汇率表,根据每天实际汇率来进行登记获取(可以通过PQ自动网抓实现);另外一个是我们销售日期汇总表(通过PQ汇总或者网抓获取)。 ?...目的(要实现效果): 通过汇率日期切片器以及销售日期切片器来实现查看不同日期汇率对不同时间销售金额影响。 ? 中主要有3个指标。汇率差,差异金额,销售额。我们一一来看这3个指标如何进行编写。...) 解释: 通过计算最后日期以及最早日期汇率,计算其差异。

    69220

    SQL系列(一)快速掌握Hive查询重难点

    返回首个不为值,都为空则返回NULL。...在做日期计算时,建议先将日期转为月初/年初计算(使用trunc函数即可),最后再进行截取操作,因为截取后日期无法被识别为日期,在后续计算又得concat回来。...因此实际操作中,在做group 强化之前,应将明细数据中每个维度NULL值进行替换为'未知',用于标记维度本身取值;group 强化之后,应将每个维度NULL值再进行替换为'全部',用以标记group...创建临时表小妙招 最后,分享给大家一个创建临时表小妙招。相信大家日常中都会构建临时数据来做一些校验,例如验证函数是否符合要求,正则是否符合预期,逻辑是否正确等。...注意每个临时表需要用括号框住,之间用,分隔开,最后一个临时表后不需要,,直接跟select语句即可(必须要跟select语句,否则会报错)。

    3.1K22

    SAP最佳业务实践:ETO–项目装配(240)-10首付款开票结算

    显示出具发票 屏幕出具发票凭证 字段中,输入之前记录开票凭证编号并选择 回车。 2. 选择项目行并选择 项目定价条件 [底部图标]。 3. 记录下面屏幕中出现总计。...可以在行总计、列 定价值中找到金额。 ? 显示了开票凭证。 F-26结算首付款 在此步骤中结算首付款。 角色应收帐款会计 会计核算 ® 财务会计 ® 应收款 ® 凭证输入 ® 支付快速输入 1.... 进帐快速输入:抬头数据 屏幕上,检查或输入以下数据: 字段名称 用户操作和值 注释 公司代码 1000 凭证类型 DZ 客户付款 过帐日期 过帐期间 银行帐户 10020100... 进帐快速输入 屏幕上,输入以下数据: 字段名称 用户操作和值 注释 客户 100001 金额 4.10中所记录首付款总额 起息日 当前日期 ? 4. 选择 回车。 ? 5.... 进帐快速输入处理未清项 屏幕上,将光标置于凭证编号金额上 [可能需要向下滚动] 并选择 激活项目。 ? 6. 选择过账. 7. 双击 凭证货币项 子选项页里 项目。 8.

    80560

    如何轻松地解决Mysql函数难题?学习视频限时免费领!

    工作过程中,有没有遇到函数难题? 要知道,数据库中函数实在太多了,每个去都学习的话,成本的确有点高。但其实,常用函数就那些。 今天我们给你整理了常用函数及示例,希望对你有所帮助。...示例: 日期202-01-02至2020-3-22相差2个月 UNIX_TIMESTAMP([date]) # 返回一个unix时间戳(从'1970-01-01 08:00:00'开始秒数 示例:...语法: 开窗函数一个概念是当前行,当前行属于某个窗口,窗口由over关键字来指定函数执行窗口范围。...如果后面括号中什么都不写,则意味着窗口包含满足where条件所有行,开窗函数基于所有行进行计算;如果不为空,则有三个参数来设置窗口: partition by子句:按照指定字段进行分区,两个分区由边界分隔...,开窗函数不同分区内分别执行,跨越分区边界时重新初始化。

    68310

    一道SQL题前世今生

    有没有更简单一点写法呢?答案当然是肯定。 变式1:新装和新增合并起来写 有没有发现“同一个日期”,如上面的“三日内行为”,对于新装用户和新增用户代码,b表和c表大段SQL是一样!...我们用实例来说明,假设今天是0809,那我们应该能得到0808以及之前数据。对于0802以及之前数据,它的当日,三日,七日转化情况已经固定了,不会随着时间进一步更新。...我们可以选择将当前最新数据呈现出来(例如0808数据,当日,三日,七日是一样,因为只有当日数据),也可以选择如果日期还没到可以计算数据时候,相应数据置为0。...调度任务代码里需要有相应处理逻辑。例如每天写入时候都需要删除之前七天,写进最新七天等。(这里使用是不置0方式)。具体在这里就不展开了。 我们继续讨论。...只需要按照日期差进行分组,统计各个日期活跃用户数,最后将相同日期用户数求和就能算出“留存用户”了。如下面代码计算了20190801留存。

    99720

    这几道SQL面试题秒杀大部分0年工作经验毕业生

    近日有朋友发来几道SQL题,说是面试时遇到。拿到题目一看,确实和一般SQL题不太一样,还是有点小技巧,对于没有工作经验新手来说,能写出一道题有一小部分,能写出2道就不多了。...,遇到昨天错误SQL,最后得到一个正确结果。...如果你还有疑惑,也可以回到文章,答案获取方式就在文章最后。...最后第四题:用一句SQL 将业务表(test_4)数据(图1),按每天,每家门店、每种支付方式对支付金额汇总,用一句SQL转成图2格式。...select 门店,结单日期,sum(if(支付方式='现金',t.支付金额,0)) as 现金from test_4 t group by 门店,结单日期order by 结单日期,门店1234===

    29830
    领券