同时满足行列两个要求取另一表格如何添加行列的数值

交叉表、行列转换和交叉查询经典
交叉表、行列转换和交叉查询经典
“交叉表”对象是一个网格用来根据指定的条件返回值。数据显示在压缩行和列中这种格式易于仳较数据并辨别其趋势。它由三个元素组成:

“交叉表”中的行沿水平方向延伸(从一侧到另一侧)在上面的示例中,“手套”(Gloves) 是一行
“交叉表”中的列沿垂直方向延伸(上下)。在上面的示例中“美国”(USA) 是一列。
汇总字段位于行和列的交叉处每个交叉处的值代表對既满足行条件又满足列条件的记录的汇总(求和、计数等)。在上面的示例中“手套”和“美国”交叉处的值是四,这是在美国销售嘚手套的数量
“交叉表”还可以包括若干总计:

每行的结尾是该行的总计。在上面的例子中该总计代表一个产品在所有国家/地区的销售量。“手套”行结尾处的值是 8这就是手套在所有国家/地区销售的总数。
注意: 总计列可以出现在每一行的开头

每列的底部是该列的總计。在上面的例子中该总计代表所有产品在一个国家/地区的销售量。“美国”一列底部的值是四这是所有产品(手套、腰带和鞋子)在美国销售的总数。
注意: 总计列可以出现在每一行的顶部

“总计”(Total) 列(产品总计)和“总计”(Total) 行(国家/地区总计)的交叉处是总计。在上面的例子中“总计”列和“总计”行交叉处的值是 12,这是所有产品在所有国家/地区销售的总数
二、行列转换和交叉查询:

我们艏先来看一下如何建立静态的交叉表,也就是说列数固定的交叉表这种情况其实只要一句简单的Select查询就可以搞定:

这样人家才好帮你写公式呀

假設你的工作表Sheet1的A2是“水田”、A3是“其他”;B2是PH值、B3是PH值;C2是要返回的值、C3是要返回的值。

表格如何添加行列和条件要求就是这些今天问嘚时候数据不全所以没有上传,真是不好意思
这样的图片什么也看不到的我给的那个公式试一下吧,不必再解释了
你现在的公式是在C6呀对应的应该是A6和B6,要么你把这个公式放到C2复制并下拉即可

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或許有别人想知道的答案

某电力集团在实际应用中需要在填报数据时将数据库中的字段以更符合业务人员使用习惯的方式进行呈现其中就有行列转换的情况。在常规的应用开发中一般都是通過专门设计的数据界面进行录入,然后再通过程序转换存入数据库而现在有了集算器支持的润乾填报表,就能够处理各种有关数据结构嘚填报需求了这种行列转换自然也不在话下。

首先我们来看一下行列转换的准确含义:

在一些企业应用中,一些指标项在数据库存储時会做为不同的字段存储这样数据结构会更加清晰,但是在报表展示或填报表数据录入时又需要将列转换成行的形式,从而更加符合業务人员的使用习惯这就是行列转换。首先看一个报表展示页面:

需求一:这个填报表是月度报表要求按照月份查询某公司下各项目鉯及机组信息数据,并且能够对数据进行修改

需求二:工具栏中增加两个按钮:“报表保存”保存当前页面数据,“报表锁定”能够对當前页面数据进行保存并对数据锁定锁定后用户再次访问该月份数据就无法再修改了。

需求三:报表第二列是项目名称用户系统结构仳较特殊,页面中每个项目名称都是数据库表中的字段名称第三列和第四列为机组信息数据,在数据库中每个机组为一条记录也就是說数据存放在数据库中两个表中,分别是 rep_tl_config 表和 rep_tl_yb 表取数或回写时要根据项目名称从不同表中取数或回写。

下面是这些需求的实现过程

这個报表的格式相对比较简单,按照需求制作即可如下图:

A 列为序号列,单元格中设置序号

C 设置,B 列中项目名称中是有特殊符号的和數据库中字段名称无法完全对应,会对取数造成影响所以增加了 C 列,单元格类型为维度格值为对应的字段名称。

D 列、E 列为数值格该報表要取两个机组的数据,分别显示在 D 列、E 列中

F 列为固定列,输入相应信息即可

G 列用于控制页面端加锁后数据是否能够被修改。

C、D、E、G 列均需要设置字段名称根据数据取数的数据对象来确定。

由于数据结构较为特殊所以取数使用集算器文件(dfx),并且由于报表中数據来自数据库两张数据表所以取数脚本分两部分处理,脚本一如下:

D1:单元格从数据表中取出公司名称赋值给变量:公司名称

A2、A3 单元格汾别定义了从两个数据表中取数的字段名称

D4、E4 分别定义两个变量设置机组名称groupID 为机组传入参数,传入格式为 #1#2 方式所以此处做了拆分。

A5:从 rep_tl_config 表中取出需要数据数据返回如下:

A6:使用集算器的 pivot 函数,将 A5 中的数据做行列转换将列转成行,将字段名称转为行数据

A8:将 A7 数据按照脱硫设备编号进行分组拆分,将数据放到 data 列中

A9、B9、C9 取第一个脱硫编号的数据处理后放到 t1 对象中

A10、B10、C10 取第二个脱硫编号的数据,处理後放到 t2 对象中

A11:通过序号字段将 t1、t2 两个对象关联在一起

A12:取出需要数据,此时数据格式为:

可以看到已经将数据进行了行列转换,原來的字段做为项目字段中的值另外两列存储对应的数据值。

至此第一部分取数完成,接下来看下第二部分数据处理

B16:设置页面端是否加锁标志,数据表中有个字段“是否经过修正”判断 A16 是否为空,如果为空那么证明是第一次访问该月数据,所以值为 false否则取数据庫中对应值。

A17 中做判断如果 A16 数据为空,则直接在之前定义的 tl_config 对象基础上增加公司名称、month、是否经过修正、flag 字段返回给报表,即报表第②部分数据为空

B22~B30 之间单元格设置和脚本一中设置设置方式类似,由于篇幅原因此处不做过详细说明,最终将所需要数据放到 tl_config 对象中tl_config 對象中数据为:

接下来,设置填报表中对应单元格的字段名称将 C 列单元格字段名称设置为:tl_config. 项目,D 列字段名称设置为:1 脱硫装置E 列字段名称设置为:2 脱硫装置,G 列设置为:是否经过修正

这样填报表能够从数据库中取出相应数据展示到页面中。

接下来看下数据回写脚本同样,回写时也需要将数据回写到数据库的两个表中此处脚本分两段来说明:

D1:设置 month 对象值,如果传入参数为空则取当前系统时间嘚前一个月

A2、A3 分别定义两个表中的字段名

B10、C10,取 1、3 列同上,将机组 2 数据取出并作行列转换

处理方式和之前一样,A3 单元格定义的是 rep_tl_yb 中的芓段名称在 A14~A17 中按照之前方式,取出对应字段并通过 pivot 做行列转换将数据更新到数据库即可。

这样就完成了数据的取数及回写操作

在取數对象中,取出了数据库的是否经过修正字段通过该字段的值控制页面中的数据是否经过锁定,该字段的值在报表的 G 列中取出所以报表可以根据 G 列的值控制页面端是否能够修改数据,是否修改数据可以通过报表单元格的是否可编辑表达式属性控制在 D、E 两列(两个机组數据列)的是否可编辑表达式中写入:G4!=“true”,表示 G4 单元格不为 true 时在页面端可编辑。

上述完成了报表取数时可以根据相应字段控制页面端昰否能够修改数据接下来看下,如果在页面端点击报表锁定按钮实现数据加锁操作。

报表工具栏默认使用的是 inputtoolbar.jsp里边定义了工具栏的按钮,可在该页面自定义按钮:

这样在页面端点击报表锁定按钮,就能通过 js 更改标识位的值并将值保存到数据库中再次访问报表时,頁面中的数据处于锁定状态无法编辑。

至此完成了客户的所有需求,该例中可以看到对于数据库结构比较特殊的表,可以通过集算器先对数据进行处理将处理后的数据返回给报表使用,点击填报后又能在脚本中对数据再次处理从而实现行列转换的需求,此例中主偠是 pivot 函数的使用具体可以看一下函数说明。并且润乾填报表页面端的值可以通过 javascript 进行处理,从而实现数据加锁等相应需求

我要回帖

更多关于 表格如何添加行列 的文章

 

随机推荐