文章目录

  • 前言
  • 一、问题拆解
  • 二、问题逐渐解决引入的关联函数
    • 获取记录数
    • 获取A列区域的开始单元格位置
    • 获取A列区域的结束单元格位置
    • 获取A列区域的极值
    • 条件判断并获取最终结果
  • 总结

前言

前两天,有个朋友提出了个Excel使用的问题,他的数据大致是这样的
他的需求是用什么方式能够快速根据B列信息计算A列的相关区域数据,并在在C列(最大最小值)相应区域的单元格显示。

举个例子
当B2单元格显示为“负数”时,C2单元格显示A2~A8之内的最小数值,即为 -1606
当B9单元格显示为“正数”时,C9单元格显示A9~A23之内的最大正数,即为 5290

这个问题,看似简单,我真正尝试时才发现要真想做到动态,需要应用多多个Excel函数的组合应用。


一、问题拆解

任何复杂的问题,都是由多个简单的问题组合而成的。对于Excel的问题而言,一般来说,复杂的问题,就是一堆Excel函数组合而成。这里我们先按照Excel的函数思路对问题做个拆解

  1. 解决问题,首先需要做个条件判断。
    需要逐行对B列的数据做判断,条件判断有3个分支结果,分别对应值为“正数”、“负数”、空的情况。、
  2. 获取A列对应区域的最大(最小)值
    当A列相应区域为“负数”时,获取最小值,当A列相应区域为“正数”时,则获取最大值
  3. 获取要计算的A列区域的开始单元格位置
    通过分析,可以看出当B列有值时,其所在行所对应的A列单元格就是A列参与计算相应区域的开始单元格
  4. 获取要计算要计算的A列区域的结束单元格位置
    很显然,结束单元格的位置与开始单元格的位置具有一定的关联关系,它们直接具有如下关系
    结束单元格的行号=开始单元格的行号+相关区域和记录数-1
  5. 获取要计算的A列区域的记录数
    A列区域的记录数与B列的非空值具有一定关联关系,只要确定了B列两个上下相邻区域的行号,也就确定了对应A列区域的记录数

二、问题逐渐解决引入的关联函数

获取记录数

  1. 要解决该问题首先需要确定当前行的行号。
    在Excel中具有函数 Rows()
    可确定当前单元格所在行的行号,这个函数与Rows(array)不同,这个函数可不需要参数直接返回当前所在行的值。
  2. 其次要获取B列的相对地址
    这时候需要引入Address函数,该函数语法为
ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])
其主要参数为:
row_num    必需。 一个数值,指定要在单元格引用中使用的行号。
column_num    必需。 一个数值,指定要在单元格引用中使用的列号。
  1. 然后引用相对地址并获取相关的值
    这里引入了Indirectly 函数,该函数相关说明为
基本语法:INDIRECT(ref_text, [a1])
必填参数:ref_text 为R1C1 样式引用
作用:返回由文本字符串指定的引用。
  1. 最后获取相应的行号
    这里引入了Match函数,该函数相关说明为
语法:
MATCH(lookup_value, lookup_array, [match_type])
参数说明:
◾ lookup_value    必需。 要在 lookup_array 中匹配的值。 例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
lookup_value 参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。
◾ lookup_array    必需。 要搜索的单元格区域。
◾ match_type    可选。 数字 -1、0 或 1。
作用:
在 范围 单元格中搜索特定的项,然后返回该项在此区域中的相对位置。

综合使用这些函数,可以获取相应的记录数,相关范例如下

对应的函数运算结果为

获取A列区域的开始单元格位置

采用与获取记
使用相同的函数,我们可以获取对应的A列区域的开始单元格位置
相关范例如下

相关计算结果如下

获取A列区域的结束单元格位置

根据之前的问题拆解分析,我们结合开始单元格位置与记录数的结果,获取到相应结束单元格位置
相关范例如下

相关计算结果如下

获取A列区域的极值

通过使用Excel的极值函数,我们可以计算出相关区域的极大值(或极小值),相关函数说明如下

函数:MAX(number1, [number2], ...)
作用:返回一组值中的最大值。函数:MIN(number1, [number2], ...)
作用:返回一组值中的最小值。

相关范例如下

相关结果如下

条件判断并获取最终结果

上述几个步骤,我们已经可以计算出第一行的相关值,由于B列的值是有变化的,所以我们需要引入IF函数来做条件判断生成相关最终结果,IF是Excel相对较常用函数。
相关范例如下

=IF(B2="负数",MIN(INDIRECT(ADDRESS(ROW(),1)):INDIRECT(ADDRESS(ROW()+MATCH("正数",INDIRECT(ADDRESS(ROW(),2)):$B$1000,0)-2,1))),IF(B2="正数",MAX(INDIRECT(ADDRESS(ROW(),1)):INDIRECT(ADDRESS(ROW()+MATCH("正数",INDIRECT(ADDRESS(ROW(),2)):$B$1000,0)-2,1))),""))

其相关运算结果如下

总结

以上就是今天要讲的内容,本文以一个数据处理需求为例,讲解了多种不同的Excel函数组合使用的效果,完整的数据集合使用范例可见Excel统计中动态的动态引用

Excel使用-统计函数中动态引用单元格相关推荐

  1. Excel技能培训-INDIRECT实现拼接动态引用单元格,trl+pageDown速切换工作簿,多工作表求和,多个工作簿合并和拆分

    1. 使用INDIRECT实现拼接动态引用单元格内容 =INDIRECT("E"&COUNTA(G14:G17)) 2. 使用ctrl+pageUp ,ctrl+pageD ...

  2. Excel工作表中定位最后单元格(FIND方法)

    前一篇博客讲解了如何使用END属性最后单元格. Excel工作表中定位最后单元格(END属性) 在VBA中还有其他的方法可以用来定位最后单元格.工作表中示例数据如下图所示,注意其中A4为空,A6至A7 ...

  3. PHP不读取Excel空行,phpexcel中遇到空单元格不跳过

    phpexcel中遇到空单元格不跳过 之前用phpexcel类,代码是这样写的: /* 导入excel文件 */ $fileType = PHPExcel_IOFactory::identify($d ...

  4. Excel工作表中定位最后单元格(END属性)

    VBA实现自动化,经常需要定位工作表中的最后单元格,以便于获取已有数据,或者在该单元格之后写入新数据.使用RANGE对象的END属性可以定位最后单元格.假设工作表中的数据如下所示.单元格区域[A5:A ...

  5. 动态创建excel文件,动态合并单元格并提供下载

    1.动态生成excel的原因 ** 出现的效果: ** 员工姓名没有自动合并单元格,在http://jxls.sourceforge.net/reference/xls_area.html 上面找了半 ...

  6. datagridview单元格合并居中_系统地学习Excel第17课,设置单元格格式

    上一篇:系统地学习Excel第16课,使用Excel的「替换」功能 本篇内容结构如下: 本章的知识体系 Excel工作表的整体外观由各个单元格的样式构成,单元格的样式外观在Excel的可选设置中主要包 ...

  7. Excel中如何按单元格颜色求和,这五种牛批的方法,值得学习

    点赞再看,养成习惯:文武之道,一张一弛. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

  8. C#/VB.NET 复制Excel中的指定单元格区域

    本文介绍C#及VB.NET程序代码来复制Excel中的指定单元格区域,包括复制单元格文本及单元格样式.复制时,可在工作簿中的同一个sheet工作表内复制,也可在不同工作簿的不同sheet工作表间复制. ...

  9. 在Excel中填写空白单元格以完成表格

    If you've imported data into Excel, you might need to clean it up before you can use it. Here's how ...

最新文章

  1. Go 中切片索引与 Python 中列表索引的差异
  2. 几个C++问题提示的莫名其妙,附录解决方法
  3. 给程序猿简历的一些建议
  4. idea怎么把代码放到git_在IntelliJ IDEA中同步代码到华为云git仓库 (on windows)
  5. 百分点发布《数据决策力白皮书》:数据的能量才开始激发
  6. 大数据商业智能的十大戒律
  7. Markdown 数学公式语法
  8. python的pyaudio教程入门_Python音频操作工具PyAudio上手教程!
  9. 斐讯N1纯净精简/夏杰语音/支持投屏-线刷固件及教程202208
  10. 贴片工字电感的封装及结构
  11. 多因素cox回归结果解释 第二十八讲 R语言-Cox比例风险模型1 - 知乎 (zhihu.com)
  12. 全纯函数导数的几何意义
  13. 变上限积分求导的原理
  14. python可以ps吗_Python功能确实非常强大!不止PS可以美化照片Python也可以!满分...
  15. 伤心的优酷土豆,抗争逆不过命运
  16. [42000][1064] You have an error in your SQL syntax; IDEA连接数据库测SQL时报异常
  17. c语言中左移和乘法谁高级,C程序员说使用移位运算代替乘法和除法更有效,是真的吗?...
  18. AltiumDesigner下载安装
  19. 计算机软考高级好考吗?需要备考多久?
  20. Clipper2中的术语和基本概念

热门文章

  1. python ppt 图片_Python PPT 转化为图片 支持拼接成一张图片
  2. 使用电容测量夹的一个小错误
  3. Chrome 插件推荐 -- 小米推荐
  4. 一阶动量与二阶动量的角度理解优化
  5. 别人的故事,我的体会
  6. 【Java】Spring和Mybatis整合
  7. 2022-2028年全球建筑电台行业供需分析及发展前景研究报告
  8. 数据库笔记2(转载动力节点老杜)
  9. 【全方位解读】一篇文章看懂NB-IoT
  10. 深入理解BodyTagSupport和TagSupport 包括SKIP_PAGE, EVAL_PAGE等