精华内容
下载资源
问答
  • 案例:下图是个简单的数据表,“总计”是最基础 sum 公式。需求:当我们在“总计”上方新增月份时,需要总计结果自动加入新增行的数值,怎么实现?解决方法:1. 就目前的表格,我们试一下增加新后,总计...

    sum 函数应该是大多数人的 Excel 启蒙函数,别看它很简单,但也有些情况下,一不注意就踩坑,比如今天的案例。

    案例:

    下图是个简单的数据表,“总计”行用的是最基础的 sum 公式。

    16a3dd89baf322b9dc929f38729156a0.png
    b9ba09cd4169c63e6b1e229ee47e6126.png
    5ede4e7a508c96df86e4338c35e0f3d3.png

    需求:

    当我们在“总计”上方新增月份时,需要总计结果自动加入新增行的数值,怎么实现?

    c1e87c4219ffa10120a74a9f02d06176.gif

    解决方法:

    1. 就目前的表格,我们试一下增加新行后,总计结果到底会不会变?

    7595f42848200f55eaa851aac44bd8f9.gif

    2. 从上述实验结果来看,sum 函数对“订单数”实现了自动添加新增行的智能统计,但是对“奖金”却不奏效,为什么?

    这是因为“奖金”单元格本身也是公式,sum 函数遇到公式就不那么智能了。

    95e61d4152c45ca71f18574653a80806.png

    3. 正确答案其实很简单,将“订单数”的总计改为以下公式,向右拖动公式复制到 C 列即可:

    =SUM(B2:INDEX(B:B,ROW()-1))

    5b0f15c428d0e9caa6a17b8f53eeed0a.png

    公式释义:

    • 同样是 sum 公式,我们只是将原先的第二个参数 B4 替换成了 INDEX(B:B,ROW()-1)
    • INDEX 函数表示返回区域中的第几行:INDEX(array,row_num)
    • index 使用方法可参见 Excel 如何多条件查询?即同时查询行、列并返回值?
    • ROW()-1:当前的行数-1,即求和项的上一行
    • 因此 INDEX(B:B,ROW()-1) 的含义就是:始终取 B 列求和项的上一行,从而实现本例需求

    以下是演示效果:

    c1e87c4219ffa10120a74a9f02d06176.gif
    展开全文
  • antd中如何给Table表格添加合计行

    千次阅读 2019-12-04 09:49:42
    最近项目需求:在表格底部添加行为金额的合计行,然后分页每页...然后我使用footer中添加个Table来做了一下合计行显示,勉强能做出来,但是需要修改Table的css样式,并且在不同分辨率下表格的线框无法其,总之...

    最近项目需求:在表格底部添加一行为金额的合计行,然后分页每页都显示,金额字段是后端返回的数据,前端不进行计算。

    因为项目的UI框架使用的是Ant Design,找了一下Table的使用方法,发现居然没有合计数据这样一个功能,但是提供了一个footer属性用来做Table底部的空间显示。然后我使用footer中添加一个Table来做了一下合计行显示,勉强能做出来,但是需要修改Table的css样式,并且在不同分辨率下表格的线框无法对齐,总之就是很low。

    多方查找资料,以及自己的不断试错,终于找到了一种颇为完美的解决方法:将合计行追加到table表格内部,修改分页功能,维护也更加方便。

    先上图,切换分页后table底部也有合计行:
    在这里插入图片描述
    上代码:

    import React, { PureComponent } from 'react';
    import { Table } from 'antd';
    import { formatMoney } from '@/utils/utils'; //自定义格式化金额方法
    
    //  columns中的多余字段删除掉了,都是重复的样式,这里为了减少代码量。
    const columns = [
      {
        title: '序号',
        width: 66,
        dataIndex: 'totalIndex',
        render: (text, record, index) => {
          if (record.totalIndex == '合计') {
            return text;
          } else {
            return ++index;  //++index相当于index+1
          }
        }
      },
      {
        title: '凭证号',
        width: 200,
        dataIndex: 'voucherCode',
        render: (text, record) => {
          //因为只有合计行追加了字段totalIndex,所以判断当前字段来让合计行的凭证号列数据为空,只计算金额列。
          //产品说让空白显示!!!
          if (record.totalIndex) {  
            return '';
          } else {
            return text || '--';
          }
        }
      },
      {
        title: '借方金额',
        dataIndex: 'debit',
        render: text => formatMoney(text)
      },
      {
        title: '贷方金额',
        dataIndex: 'credit',
        render: text => formatMoney(text)
      }
    ];
    
    export default class ListTable extends PureComponent {
      // 切换分页时调用函数
      changePagination = pagination => {
        const {
          dispatch,
          queryFinanceList: { formValues }
        } = this.props;
        const params = {
          page: pagination.current,        //当前分页的页码
          limit: pagination.pageSize - 1,  //这里必须要减1,因为与后台规定每页获取的数据为10,此处的pageSize为11。
          queryCondition: { ...formValues },
        };
        dispatch({
          type: 'queryFinanceList/fetch',
          payload: params,
        });
      };
    
      render() {
        const {
          loading,
          queryFinanceList: {
            list,
            pageNum,
            total: computedTotal,  //重命名为computedTotal
            pages,
            pageSize
          },
        } = this.props;
        //定义合计行数据
        const totalRow = {
          id: String(Math.random()),
          totalIndex: '合计',
          debit: 1165000,  //应当取从后台返回数据,此处为演示,所以自定义了默认值
          credit: 1183000, //应当取从后台返回数据,此处为演示,所以自定义了默认值
        }
        //将合计行数据添加到list数组中后生成新数组:_list,此时table每页的数据为11
        const _list = list && list.length > 0 ? [...list, totalRow] : [];
        //table与pagination组件之间的联动
        //因为table表格每页显示的数据被pagenation分页默认的每页显示数pageSize所限制,默认为10,为了让合计行显示到页面上,需+1。
        const _pageSize = pageSize + 1;
        //table表格需要获取的总数据,为了让table将后台获取数据和新增合计行数据全部显示出来,需重新计算总数。
        const _total = computedTotal + pages;
        //分页设置
    	const paginationDefault = {
          showSizeChanger: true,
          showQuickJumper: true,
          current: pageNum,
          total: _total,
          pageSize: _pageSize,
          //因为与后台规定每页获取的数据为10,而前端自定义追加了一条合计行,这导致当前table的每页数据为11条,所以需要手动将分页数据+1
          //若是想显示为['10', '20', '30', '40'],则修改每页获取数据为9即可。
          pageSizeOptions: ['11', '21', '31', '41'], 
          //此处显示的是从后台获取的总数据数,合计行不在其中。
          showTotal: () => `共${computedTotal}条记录`
        }
        
        return (
          <Table
            loading={loading}
            rowKey={'id'}
            scroll={{ x: true }}
            bordered={true}
            loading={loading}
            columns={columns}
            dataSource={_list}
            pagination={paginationDefault}  
            onChange={this.changePagination}
          />
        );
      }
    }
    

    如果使用过ant design的Table组件以及Pagination组件的话,上面基本没有什么难点。
    逻辑理解的话有两个难点:
    1、分页功能的total和pageSize的计算方式?
    2、合计行totalRow与后台返回数据的关系?

    在table表格中使用pagination分页功能后,table每页显示的数据被pagination的pageSize(每页显示数据)限制,如果pageSize为10的话,那table中每页就只能显示10条数据。现在我们手动给table添加了合计行totalRow,那table每页的数据显示就变为了11,这时候pageSize若还是10,那第11条数据是显示不出来的,所以pageSize需要修改为11,这样合计行totalRow就能显示出来了。我们在切换分页的时候,是需要请求后台数据的,pageSize需要当做请求参数传送给后台。但是这时候我们设定了pageSize为11,而规定的每页显示的真实数据为10,所以需要在请求数据时pageSize-1。

    total也需要跟随pageSize的+1而改变。如果后台返回的total为61,pageSize为10,pages(几个页面)为7,那么“新total”的计算方式为:61+1*7=68。因为在table每页中都添加了一条合计行totalRow的数据,所以计算方式为61+1*7=68。如果手动添加了两条数据,那么总数计算就应当为:61+2*7=75。

    若还有更优美的实现方式,欢迎留言分享。

    参考:react:antd 中 table 添加合计行

    展开全文
  • 数据,比如A2:A11是一些金额数据,在A12单元格上面的数据进行求和,A12函数公式是:=SUM(A2:A11)。但是若在第12行的上面插入若干,然后在新插入空白单元格输入数据,原先函数公式=SUM(A2:A11)不会...

    76379bfb1593ba5fbc8f42f5bf85d36f.png

    有一列数据,比如A2:A11是一些金额数据,在A12单元格对上面的数据进行求和,A12的函数公式是:=SUM(A2:A11)。

    但是若在第12行的上面插入若干行,然后在新插入的空白单元格输入数据,原先的函数公式=SUM(A2:A11)不会发生变化,所以无法对新输入的数据进行求和。请看下面的截图:

    7660c575fb45b9c479d0391cbeab2093.png

    若想能动态汇总上面的数据,即使紧挨着求合计的单元格插入空白行,则推荐用下面的函数公式,在A12单元格输入如下:

    =SUM($A$2:INDIRECT("r[-1]c",0))

    其中,INDIRECT("r[-1]c",0)是间接引用函数。indirect函数有两种引用形式,一种是A1引用形式,一种是R1C1引用形式。这里用的是R1C1的形式,indirect函数的第2参数是0时代表r1c1;indirect函数的第1参数是"r[-1]c",其中r代表行,c代表列,[-1]表示上一行,"r[-1]c"整体指的是上一行当前列。

    更多相关阅读

    展开全文
  • 当使用el-table时免不了要对数据进行合计,el-table提供合计行,使用show-summary即可将合计行显示在表格尾部, 具体参照官方文档:https://element.eleme.cn/#/zh-CN/component/table 但是官方提供的合计行并没有...

    当使用el-table时免不了要对数据进行合计,el-table提供合计行,使用show-summary即可将合计行显示在表格尾部,

    具体参照官方文档: https://element.eleme.cn/#/zh-CN/component/table

    但是官方提供的合计行并没有提供对样式进行修改的方式,对此查找资料用一种方式可修改合计行的自定义合并

    1.首先显示合计行

    <el-table :data="addToData" style="width: 100%" border show-summary
              :header-cell-style="changeColor" :cell-style="changeColor">

    ...

    2.通过f12定位当前table的合计行的具体位置

    然后通过原生dom获取到合计行的所有列的集合

    const tds = document.querySelectorAll('#table .el-table__footer-wrapper tr>td');
    

    3.合并列,其他列隐藏,显示列不用修改 

    tds[0].colSpan=2;
    tds[0].style.textAlign='center'
    tds[1].style.display='none'
    tds[2].colSpan=5;
    tds[3].style.display='none'
    tds[4].style.display='none'
    tds[5].style.display='none'
    tds[6].style.display='none'

    4.监听属性,表格监听  完整写法

    watch:{
      表格数据:{
        immediate:true,
        async handler(){
          //await this.$nextTick(); 根据实际选择延迟调用
          const tds = document.querySelectorAll('#table .el-table__footer-wrapper tr>td');
          tds[0].colSpan=2;
          tds[0].style.textAlign='center'
          tds[1].style.display='none'
          tds[2].colSpan=5;
          tds[3].style.display='none'
          tds[4].style.display='none'
          tds[5].style.display='none'
          tds[6].style.display='none'
        }
      }

     

    展开全文
  • 人脸识别是种能够从图像或视频源视频帧中实时识别或验证人技术。 在今天文章中,我们将讨论五个开源人脸识别项目,以...因此,作为奖励,我还增加了各种课程链接,这些课程我学习数据科学和ML过程有很
  • 合计行必须固定(冻结)在表格的最底部,且其位置不受滚动条的滚动而移动; 可以设置合计行单元格的数据展示格式. 本以为winform程序出来已经这么多年了,这个本也是个比较基础的功能,网上应该有很多现成的例子,便想...
  • 的数据表格控件

    千次阅读 2007-01-30 12:01:00
    下载GridDLL演示 我编辑环境是VS2005,语言是C#,因为实际软件开发过程中经常用到像DataGrid或DataGridView这样用来显示并编辑数据的控件,所以数据表格控件我们来说是很重要控件了.在以前我用过DataGrid,为了...
  • 简易电子表格 : 可以对表格进行建立、...8.排序使任一行/列中的数据按大小升或降排列对字符串型数据还要可选大小写敏感  9.表格保存使电子表格存储在磁盘上磁盘文件并可随时读入供继续处理
  • 对于无“增删改查”的数据列表,我们不用使用中继器,沿用表格部件也是可以,本次教程,我们就学习一下如何对表格部件制成列表项进行求和交互设置。交互说明勾选中一行列表项,自动计算当前行“小计”单元格,...
  • Layui自动合计

    千次阅读 2019-07-28 15:45:02
    最近涉及表格的数据统计,layui自动合计有所了解,分为直接显示在表格里的和可以作为另外用途的 第种:这个就是直接开启layui合计功能 直接加上totalRow开启合计行,在需要的列中调用一下,如下图: 加上...
  • 财务表格中经常在最后一行进行统计(合计):相应列所有数据求和,将得到的合计值放入该行。用Datagrid控件结合DataRow对象以及前面提到从Datagrid控件中取单元格值方法可以实现,主要代码如下: Dim ...
  • 五、Crosstab交叉表格

    2020-12-01 12:41:43
    五、Crosstab交叉表格一次分组二次分组 ...sun会各个分组进行统计合计 选择了各分组统计就需要添加totls 布局和预览 无用布局删除,否则主报表有多少条记录就有多少页 二次分组 数据 新建Datase
  • 滴答表格企业版3.8.3

    2009-07-17 12:34:01
    2.多数据链接 一张滴答报表模板,支持设置多个数据链接,每个数据链接可以对应不同类型数据库或ODBC甚至是EXCEL,也就是在个滴答模板中的数据可以来自多个不同数据库,这对于同时使用多套管理系统企业的数据报表...
  • 滴答表格企业版3.8.2

    2009-06-17 11:09:49
    数据链接 一张滴答报表模板,支持设置多个数据链接,每个数据链接可以对应不同类型数据库或ODBC甚至是EXCEL,也就是在个滴答模板中的数据可以来自多个不同数据库,这对于同时使用多套管理系统企业的数据报表...
  • (使用环境:数据的移动,如把第二行的数据移动到上面去,最下面的一行为合计行,不允许移动,因此,就需要把第一行与最后一行的按钮屏蔽掉。屏蔽的方法:把按钮改成普通的单元格。具体实现代码如下:(第8列中的第...
  • (使用环境:数据的移动,如把第二行的数据移动到上面去,最下面的一行为合计行,不允许移动,因此,就需要把第一行与最后一行的按钮屏蔽掉。屏蔽的方法:把按钮改成普通的单元格。具体实现代码如下:(第8列中的第...
  • <br>焦点单元格管理功能,按回车键,焦点下移一行。按Tab键,焦点右移一列。 <br>单元格编辑功能,当焦点在某个可编辑单元格时,该单元格显示一个编辑器,编辑结束焦点移开单元格时候,该单元格恢复为绘制...
  • 技巧90 多行数据合并成一行 技巧91 行列区域直接转换 技巧92 多行多列数据转为单列数据 技巧93 单列数据转为多行多列数据 技巧94 数据区域复杂转换 第11章 排序 技巧95 包含标题的数据表排序 技巧96...
  • EhLib最新版本EhLib 5.5

    热门讨论 2011-11-03 11:39:47
    EhLib5.5包含了BorlandDelphi5...在 Ehlib 后期版本中,还提供了个非常强大过滤功能,他会在 DBGrid 表头下方显示个过滤,用户在此行相应列中输入查询条件,DBGridEh 可以自动为您筛选出所需要的数据
  • 主要内容有C#开发环境使用、C#语言基础应用、字符串处理技术、数组和...使用、DataGridView数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效...
  • IC卡读写器通过计算机串行口进行连接,通过IC卡读写器计费管理软件可以各种不同用途的卡进行安全认证和数据读写操作。 用户卡是由用户持有,是计费管理系统与智能表进行数据交换介质。用户卡将用户购水、电...
  • 因此,您能获得个容易使用而且非常健壮网格控件来创建用户友好界面,并且显示,编辑,格式化,组织,汇总以及打印表格数据! 技术特性 分层显示样式 采用有用新属性和新方法,按最适合您和您用户方式来...
  • 默认情况下,对于合计行,第列不进行数据求和操作,而是显示合计二字,其余列会将本列所有数值进行求和操作并显示。 列求和: show-summary :summary-method=" getSummaries" 在methods里写: 这样出来结果...
  • 如何在EXCEL中快速定位最后一行数据 用SUN函数快速求和 在Excel中快速查看所有工作表公式 在Excel中设置行间距 怎样同时改变多行行高 快速换行 让文本换行 在Excel中行列快速转换 将原有列中内容倒置过来 快速回到...
  • 点击Next一直到不能点,再选择Preview,就行数据预览,点击Design,就可以展示数据格式进行调整。 添加Formula对象。 起个好听名字,然后放到你喜欢位置 3、编写VB脚本 新建vb工程需要添加水晶报表...
  • 解决让IE浏览器兼容ES6特性

    千次阅读 2020-06-12 19:09:48
    上篇文章提到table表格的排序问题,因为要确保合计一行不参与排序,这里我用了ES6特性来将合计以外的数据赋值到新的数组,再拼接新数组.但是IE浏览器并不能识别const和let等关键词,会报语法错误 于是我将const改成var,...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    如何在EXCEL中快速定位最后一行数据 用SUN函数快速求和 在Excel中快速查看所有工作表公式 在Excel中设置行间距 怎样同时改变多行行高 快速换行 让文本换行 在Excel中行列快速转换 将原有列中内容倒置过来 快速回到...
  • * 10、增加最后一行的汇总行,支持列聚合函数,参见http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.[removed]v=VS.100).aspx * 假设id列显示“合计”字符,avgPrice进行平均值,total列显示...
  • Ehlib5.5 For Delphi

    2012-11-19 09:08:23
    EhLib5.5包含了BorlandDelphi5-9...在 Ehlib 后期版本中,还提供了个非常强大过滤功能,他会在 DBGrid 表头下方显示个过滤,用户在此行相应列中输入查询条件,DBGridEh 可以自动为您筛选出所需要的数据
  • EhLib V5.5

    热门讨论 2012-01-30 12:26:11
    EhLib5.5包含了BorlandDelphi5-9...在 Ehlib 后期版本中,还提供了个非常强大过滤功能,他会在 DBGrid 表头下方显示个过滤,用户在此行相应列中输入查询条件,DBGridEh 可以自动为您筛选出所需要的数据

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

对表格的一行数据合计