Excel表格怎么连续选择连续3天出现的数据怎么套用公式自动计算出来?

小伙伴们在日常处理数据的过程中,肯定遇到过Excel单元格内的公式不进行计算,要么显示为公式、要么显示为一个错误的内容,并不是正确的结果,经常找不到原因所在,一度以为自己的公式输入错误

其实大部分情况下,并不是函数公式输入错误,而是设置的问题,下面就带大家盘点下,四个很容易出错的点,导致公式不进行计算!

单元格格式为文本格式,这是常见问题之一,文本格式存储内容为文本格式,包括数字,导致公式不进行计算,这时候只要将单元格格式调整为常规格式,再次输入公式即可

这种情况多发于csv数据源中,其以纯文本形式存储表格数据而闻名,而Excel单元格默认格式是常规,只要不是人为调整,一般不会出现公式不计算的情况。

Excel公式在默认情况下是输入即自动计算的,但是Excel也提供了公式手动更新的选项,菜单栏【数据】—【计算选项】下拉选择【手动】,如果勾选此项,工作表中输入的第一个公式正常计算,拖动第一个公式下拉的公式皆不会计算,等待着手动更新;

这种情况只要将手动计算更改为自动计算即可,【计算选项】下拉选择【自动】

之所以有这个功能是因为,Excel时时刻刻保持运算,会占用大量内存,如果表格中要输入大量公式,在数据较多的情况下会导致表格卡顿

这时候只要将计算选项修改为手动,然后等到所有的公式输入完成之后,在一次性更新公式,会节省大量的时间!小伙伴们如果在更新大量数据公式的情况下,可采用此功能,将会节约不少时间哦。

下图中的数据源有几十万行,在从另外一张表中去匹配订单ID的时候,可以发现底部数据的公式未进行更新,有数据,但明显是错的;

这是因为数据量过多,程序运行不过来,底部数据默认显示第一行的内容,这时候只要点击【公式】—【计算工作表】即可,工作表里面的所有公式会开始重新计算;

为了防止此类事情发生,一是要保证Excel表格数据量不要过大、公式要及时粘贴成值,二是尽量将匹配数据源放置于同一工作簿内,公式运行速度要快很多

Exce公式栏有一个功能叫【显示公式】,点击之后,工作表中的所有公式都会显现出来,如果误点击此项,在单元格内输入公式也是不会进行计算的,这时候只要取消【显示公式】即可。;

当然此项功能存在自然有它的作用,当我们打开一张表的时候,如果提示有外部链接,可通过此方法找到链接单元格,查看详细信息!

这四种情况都是Excel公式不进行运算的常见形式,在刚开始工作的时候,也是思索良久才发现问题所在,你是否也遇到过呢?今天分享给各位小伙伴,避免踩坑

本文同步发布于公众号【Excel函数编程及可视化】,定期更新数据小技巧。

Excel公式不能自动更新数据的解决方法

在复杂的Excel表格数据计算过程中,公式无疑是提高效率的一个很好的方法,但是有时我们会发现,Excel表格中的公式无法自动更新数据了,是什么原因引起的,又该如何解决

通过excel表格进行数据录入,整理,统计,汇总,是很便的事情,在这个过程中,偶尔会碰到一些奇怪的情况,比如对单元格中的公式进行修改后,结果不发生变化。公式没变化,数据改变了,结果不自动更新,这时怎么办呢?下面就给大家分享一下EXCEL修改公式后数据不会自动更新怎么办的解决方法。

1. 公式计算配置为“手动”所致

将Excel的公式计算配置为“手动”状态,这是最常见的公式无法自动计算的原因之一,因此也是我们在检查Excel公式“失效”时,需要执行的第一道检查程序。

启动Excel,单击“公式”选项卡,然后单击“计算选项”按钮,在下来菜单中,将计算选项设置为“自动”即可(图1)。

小提示:一般情况下,Excel表格默认的计算选项为“自动”状态,但此设置在某些情况下可以由“宏”或以前打开的其他Excel工作簿进行更改。因此,如果我们不知道此设置,而宏或其他工作簿自动更改了此设置,就会导致含有公式的单元格不能自动更新数据的问题发生。

2. 单元格的格式为“文本”引起

不小心将单元格(包括公式)为“文本”可能是导致此问题的另一个原因。我们知道,如果是文本格式,单元格将不会按预期的公式设定进行计算。

单击单元格,检查“开始”选项卡的“数字”组。如果显示“文本”,请使用下拉菜单将其更改为“常规”(图2)。

现在,通过双击单元格并按下回车,重新计算单元格中的公式即可。

3. “显示公式”按钮已打开导致

如果“公式”选项卡上的“显示公式”按钮处于启用状态,则公式将不起作用。这种情况可能是由用户或以前使用此工作簿的人意外操作所致。此按钮主要用于审核公式,因此它显示公式而不是最终结果。但是,此选项卡在解决公式错误时非常有用(图3)。

要解决此问题,只需单击“显示公式”按钮并将其关闭即可。

4. 等号前输入的空格所造成

最后一个原因可能是在键入公式时,如果不小心在“=”之前输入了一个空格,则公式将无法计算。由于视觉的差别很小,因此这一个错误很难被注意到,常常无法识别。

通过双击单元格,选择公式中“=”之前的区域,检查是否有空格并选中,如果有,请将其删除,之后公式将获得更新(图4)。

1、打开Excel2007软件,这里以2007版本为例,其它版本操作类似。
2、打开一个出货单类型的excel表格,对其中一个公式进行修改,
3、当对单价进行修改后,对应的格子里,结果并没有变化,
4、这时可以在excel中,按f9进行手动计算,可以看到结果正确了,
5、经研究发现解决方法很简单,从左上角进行菜单中的Excel选项,
6、在Excel选项界面中,进入公式,
7、在工作簿计算中,将自动重算开启,回到操作界面,就会看到所有的修改都生效了。

Excel 公式怎么不能自动更新了

1. 公式计算配置为“手动”所致

将Excel的公式计算配置为“手动”状态,这是最常见的公式无法自动计算的原因之一,因此也是我们在检查Excel公式“失效”时,需要执行的第一道检查程序。

启动Excel,单击“公式”选项卡,然后单击“计算选项”按钮,在下来菜单中,将计算选项设置为“自动”即可。

小提示:一般情况下,Excel表格默认的计算选项为“自动”状态,但此设置在某些情况下可以由“宏”或以前打开的其他Excel工作簿进行更改。因此,如果我们不知道此设置,而宏或其他工作簿自动更改了此设置,就会导致含有公式的单元格不能自动更新数据的问题发生。

2. 单元格的格式为“文本”引起

不小心将单元格(包括公式)为“文本”可能是导致此问题的另一个原因。我们知道,如果是文本格式,单元格将不会按预期的公式设定进行计算。

单击单元格,检查“开始”选项卡的“数字”组。如果显示“文本”,请使用下拉菜单将其更改为“常规”。

现在,通过双击单元格并按下回车,重新计算单元格中的公式即可。

3. “显示公式”按钮已打开导致

如果“公式”选项卡上的“显示公式”按钮处于启用状态,则公式将不起作用。这种情况可能是由用户或以前使用此工作簿的人意外操作所致。此按钮主要用于审核公式,因此它显示公式而不是最终结果。但是,此选项卡在解决公式错误时非常有用。

要解决此问题,只需单击“显示公式”按钮并将其关闭即可。

4. 等号前输入的空格所造成

最后一个原因可能是在键入公式时,如果不小心在“=”之前输入了一个空格,则公式将无法计算。由于视觉的差别很小,因此这一个错误很难被注意到,常常无法识别。

通过双击单元格,选择公式中“=”之前的区域,检查是否有空格并选中,如果有,请将其删除,之后公式将获得更新。

Excel不能自动更新求和公式的解决方法

方法一:将数据区域转换为表格

将区域转换为表格后,可将表格中的数据单独进行分析和管理,Excel2003中称之为“列表”。步骤如下:

1、删除原区域中的汇总行。

2、选择数据区域中的某个单元格,选择“插入”选项卡,在“表格”组中单击“表格”,弹出“插入表”对话框,单击“确定”。

3、在“表格工具-设计”选项卡的“表格样式选项”组中勾选“汇总行”,给表格添加汇总行。

4、在汇总含的空单元格中选择一种汇总方式,如本例为求和。

这样,以后在插入新行添加数据后,汇总行中公式的求和范围总能包括新插入的行。

方法二:将空单元格全部输入数值“0”

当区域中没有空单元格时,在汇总行的上方插入新行后,Excel会自动更新求和公式,因而可以将全部空单元格都输入数值“0”来解决这个问题,方法是:

1、选择数据区域,按F5键打开“定位”对话框,单击“定位条件”,在弹出的对话框中选择“空值”后确定。

2、在编辑栏中输入数值“0”,然后按Ctrl+Enter,在所有选中的空单元格中输入“0”即可。

方法三:定义名称+公式

先定义一个名称,然后在求和公式中引用。这个名称所引用的单元格在求和公式所在单元格之上。

1、选择非第一行的某个单元格,如B13单元格,在“公式”选项卡的“定义的名称”组中单击“定义名称”,在弹出的对话框中对新建的名称进行设置,如本例名称为“Last”,引用位置为所选单元格上方的单元格,且为相对引用,如本例为:

2.修改汇总行单元格中的公式,如B列汇总行的公式为:

这样,以后插入新行后也能自动将新增的数据纳入求和范围。

可以在汇总行使用下面的公式,以B列为例:

excel表格里的公式不能自动更新的解决方法:

公式不自动更新解决步骤1:如图所示,选中的表格里面有公式,但是不会自动更新数据了

公式不自动更新解决步骤2:点击公式菜单栏,选择计算选项

公式不自动更新解决步骤3:其选项在手动上

公式不自动更新解决步骤4:选择到自动选项上

公式不自动更新解决步骤5:这样所有公式就可以自动更新了到此这篇关于Excel公式不能自动更新数据的解决方法的文章就介绍到这了

AutoCalculate是表格复杂运算的解决方案,让你的计算逻辑可维护,帮你省掉成百上千行的计算逻辑代码,告别硬编码,拥抱需求变化。

当我的团队进行税务系统模块开发的时候,我发现他们需要花费80%的时间去解决计算问题,尤其体现在表格(Grid)中的计算,这些时间花在:

  1. 写前台js代码(因为用户在表格中的输入会影响其他单元格,所以需要即时将运算后的新值呈现给用户看)
  2. 写后台代码(因为用户对表格数据的更改会影响其他表格,所以要在用户点击保存时更新受影响表格的数据)
  3. 实施修改计算方法,导致开发者需要修改代码

于是我调研了税务其他模块的功能,发现税务系统大量使用表格控件,而其中或多或少都会涉及到计算问题。而处理计算的方法,都是采用硬编码。

计算,这个习以为常的编码动作,其实很容易让人联想到Excel中的公式,更何况需求文档本身就是以Excel的形式提供的。当我们在使用Excel的时候,可以在单元格中设置公式,通过改变源头单元格的值,Excel将自动计算单元格公式,将结果值赋予目标单元格。那么,我们是否可以参考这种模式,开发者不再需要写复杂难懂的计算逻辑,只需要根据实施提供的公式,将它们转成某种格式的语句,再调用某种计算引擎产出结果,将结果呈现给用户看或者持久化到数据库?答案是肯定的,而这一切的核心就是自动计算引擎——AutoCalculate。

AutoCalculate是表格复杂运算的解决方案,可以让你省掉成百上千行的计算逻辑代码,从此写代码就像写Excel公式一般简单。

AutoCalculate由两部分组成,分别是公式和计算引擎,公式是就是根据特定语法编写的字符串,如:[Month12,1]#3 = [Month11,1] * 10,计算引擎即是AutoCalculate.js,负责解析公式。以下开始介绍如何书写公式。

假设有这样的场景,单元格①=单元格②+单元格③,对应的公式是:

先来看看[Month1,1]代表什么,首先,中括号[ ]代表一个单元格,Month1即“1月”对应的列名,紧接着是一个逗号,,后面的1代表RowNo = 1,以此类推,

所以我们可以用[y,x]来代表一个单元格,y即列名,也称作纵坐标, x即RowNo的值,也称作横坐标

如果表格没有RowNo列怎么办?如想寻找答案,请继续往下阅读

* refField(必填):参考字段,即单元格[y,x]中x是哪个字段的值

实际上,除了1月,2月,3月……10月也存在类似的公式,即:

也就是说我们需要写10条这样的公式,对于简单的场景来说,这不成问题,但是对于某些包含大量公式的表格,这种写法存在一些弊端,比如容易写错,还有,公式长的时候也需要花费较多时间才能写完。所以,便有了区域公式。

观察上面的公式可以发现,其实每条公式都可以用一条公式来代替,例如以下公式:

这里没有明确的列名,只是用了一个占位符@,但它足以代表以上10条公式。这个时候,我们只需要在适当的位置补上列名就可以了,所以,最终的公式就是:

你需要将列名用,隔开,并放置在大括号{ }内,如此,1条公式便相当于10条公式。

占位符不仅仅可以用于纵坐标,还可用于横坐标,如以下公式:

使用区域公式,可以写成:

由此可见,区域公式为公式的书写带来了极大的便利。

在实际场景中,我们经常会碰到一些复杂的公式,如下图,单元格公式使用了Excel自带的Max函数,对于这样的公式,我们可以这样写:

如你所见,公式支持js语法,你可以在公式等号右边放入一个js变量,甚至js函数,只要是js解析引擎认识的语法,都被支持。

这里有个需要注意的地方,就是不可以将数组元素放入公式中,因为js的数组元素通常带有“[ ]”符号,这与公式当中的单元格表示符”[ ]”产生冲突,所以数组元素被禁止使用,请留意这一点。

接下来,带大家看一看另外一种场景,如图,存在这样的关系:

单元格① = 单元格② - 单元格③

你可能很快就写出了以下公式:

这样写本身没有错,但是我得提醒你,这里的行是不固定的,也就是说表格有多少行完全取决于当时的数据库情况,有可能今天只有3行数据,明天会有5行,后天会有50行。我们不可能随着行数增多而增加公式,所以对于这种行数不确定的表格,我们有一种新的写法,我将它称为[y]公式,因为跟普通公式相比,它没有横坐标:

只需要一行公式,AutoCalculate便会将公式应用于指定列名下的所有行。

有时候,我们需要求某一列的和,虽然求某一列的和可能不是我们的最终目的,但却是我们完成计算的必要步骤,如存在以下关系:

单元格③ = 单元格① / 单元格②

单元格②是GroupApprovedTotal列的合计值,我们用来表示,即:。加上这里的行不固定,需要用到[y]公式,所以公式应该写成:

我们知道,在除法中,除数是不可以为0的,所以正确的写法应该是:

当你将这条公式放你的代码,并启动程序后,聪明的你应该很快发现,你得到的值不够精确,如上面单元格③显示的数值是66.91%,如果你的单元格①和单元格②跟上图的数值相同,你的单元格③很可能是67%,这是为什么呢?

默认的,AutoCalculate会将计算结果保留2位小数,67%,即0.67,如果想得到66.91%,即0.6691,那就是需要保留4位小数,这时,你需要告诉AutoCalculate,你需要保留4位小数,所以,完整的写法应该是:

在公式的等号左边,被赋值单元格的右边,加“#”号,紧跟着写上小数位数,注意,“#”和小数位数之间不能有空格,前后可以有空格。

终于到了回答这个问题的时候,我想问问大家,我们是如何在一个平面找到一个点的?答案就是需要这个点的横坐标和纵坐标,同样的,在一个表中,如何找到一个单元格?首先我们可以确定纵坐标,因为所有的列名都是已知的,关键就在于横坐标的确定。采用RowNo来定位,大家一定会觉得似曾相识,因为它跟Excel左侧的序号很像,但不代表只有数字才能作为横坐标。只要值具有唯一性,即不重复,就可以作为横坐标。

举个例子,假设以下的表格是固定两行,没有RowNo,但是可以看出公司编号(BuCode)具有唯一性,那么BuCode就可以作为参考字段,BuCode的值就是横坐标,那么公式就可以写成:

如果有RowNo,用RowNo做参考字段时这样写:

何为跨数据源计算?用过Excel公式的朋友应该能看懂下面这个单元格的公式代表的意思。很明显这个单元格的值是其他Sheet的数据经过运算后的值,跨数据源计算就是专门处理这样的场景。

我们很少甚至不会在前台做跨数据源计算,这里是想告诉大家如何书写公式及调用AutoCalculate的方法,以便在“后台用法”这一章节真正使用到它。

首先,为了取得其他数据源单元格的数据,我们需要拓展一下单元格,之前,我们的单元格是这样的:[y,x],暂且称为二元单元格吧,还有这样的单元格:[y],成为一元单元格,现在,你会看到这样的单元格:[外部数据源,y,x],即三元单元格,三元单元格的出现令到AutoCalculate定位单元格的能力从二维拓展到三维,即不管你有多少表,AutoCalculate都能找到你要的数据。

这是一条使用了三元单元格的公式:

其中OutputTax是某个数据源的名称,你可以任意取名,越简洁越好,否则复杂的公式会被写得很长,难以阅读。

下面这条公式会从两个数据源OutputTax和TaxRate取值:

我相信通过阅读前面章节的内容,你已经能够看懂下面公式的意思,其中前三行公式使用了外部数据源,并结合了区域公式的写法。

是时候调用我们的计算方法了,为了演示效果,我添加了一个按钮,并将方法写在按钮事件中

③ 从数据库获取另一个外部数据源taxRateDatas

④ 这里是重点,先来看看AutoCalculate 的构造函数,这里有两个参数:

options有个属性externalDatas,表示外部数据源,是一个数组,因为数据可能有多个,每个数组元素都是一个对象,有3个属性:

name:外部数据源名称,这里取什么名称,对应公式中的外部数据源名称

gridDatas:需要重新计算的表格数据,是一个数组

AutoCalculate之所有支持所有的js表格控件以及能被后台调用,就是借助于这个方法,因为不论是哪种js表格控件,都能够提取出表格数据(纯数据),数据通常是数组形式,只要将这个数组传进来就可以了。

⑤ 调用calculate后,payableTaxDatas的值已经是运算过的最新值,现在将它绑定到当前的表格即可。

后台调用AutoCalculate,我们需要用到V8引擎,还有一点很重要,后台调用AutoCalculate也需要用到公式,我们之前的做法是将所有公式放在Extjs的Controller文件中,如下图:

为了方便后台调用,我们将公式提取出来作为一个单独的文件

项目中对AutoCalculate后台调用进行了封装,使用非常简单。

① 保存当前表格的数据

② 获取公式所在js文件的目录

③ 获取两个外部数据源

④ 调用封装后的后台方法,使用了第②步和第③步获取的数据,其中FormulaExpression是公式表达式,即通过这个表达是来找到你提供的js文件中的公式

⑤ 上一步返回的newDatas已经是经过运算的最新数据,现在将这些数据保存到数据库

书写公式时有两点需要注意:

  1. 单元格中不允许出现空格

  2. 小数位数标记与小数位数之前不能有空格

我要回帖

更多关于 Excel表格怎么连续选择 的文章

 

随机推荐