欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天来和大家分享一道合并单元格的题目。合并单元格是绝大多数人的痛点,小白们都喜欢使用合并单元格,但其却给后面的计算、统计等工作带来巨大的麻烦。只有掌握好相关的操作技巧,才能更有效地处理合并单元格问题。
今天的题目是这样的:
将合并单元格对应区域中的最大值找出来后输入在合并单元格中。题目要求很简单,但解题过程却一点也不简单。
今天将给朋友们带来一个公式,两组代码及一个彩蛋!
01
函数公式法
选中单元格区域C2:C22,输入下列公式,CTRL+Enter确认即可。
=MAX(OFFSET(A2,,,MATCH(1=0,B3:B22=0,-1)))
我的版本是EXCEL2016,这条公式在我这里不能正常显示结果,很是疑惑!上图公式中OFFSET函数第一参数应该是单元格A2,图片来自于群友的分享。这里特别说明一下。
MATCH(1=0,B3:B22=0,-1)
对于MATCH函数,我们常用的的三参数是“0”和“1”,极少用到“-1”。当第三参数是“-1”时,MATCH函数要求查找区域中的数据降序排列,并返回大于等于查找值的最小值的位置。
以第一个合并单元格为例:
1=0,逻辑值是FALSE,实际上即是查找“FALSE”。
B3:B22=0,返回一组逻辑值,{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;...},第一个“FALSE”出现在第4个位置上。
OFFSET(A2,,,MATCH(1=0,B3:B22=0,-1))
OFFSET函数以单元格A2为基点,不做任何偏移,新的区域行高为4。
MAX(OFFSET(A2,,,MATCH(1=0,B3:B22=0,-1)))
最后由MAX函数取得最大值。
其它合并单元格也是相同的逻辑。
02
利用VBA输入公式
首先选中单元格区域C2:C22,再执行下列代码。
完整代码如下:
Sub 合并单元格最大值()
Dim e As Range, r As Range, area, s, cl
cl = "A"
For Each e In Selection
Set r = e.MergeArea
If e.Address = r.Range("A1").Address Then
s = r.Address
area = Replace(s, Split(s, "$")(1), cl)
e.Formula = "=max(" & area & ")"
End If
Next
End Sub
其中:
If e.Address = r.Range("A1").Address Then
s = r.Address
...
End If
令变量r为合并区域。如果合并单元格的地址等于变量r中第一个单元格的地址,则将这个地址赋值给变量s。
area = Replace(s, Split(s, "$")(1), cl)
Split函数将变量s按“$”拆分;Replace将字母“D”替换为字母“A”,生成一个新的单元格区域。
e.Formula = "=max(" & area & ")"
在对象变量e中输入公式,结算结果得到最大值。
代码运行的结果如下:
03
VBA直接录入最大值
完整代码如下:
Sub 合并单元格最大值1()
Dim e As Range, r As Range, area, s, cl
cl = "A"
For Each e In Selection
Set r = e.MergeArea
If e.Address = r.Range("A1").Address Then
s = r.Address
area = Replace(s, Split(s, "$")(1), cl)
e = WorksheetFunction.Max(Range(area))
End If
Next
End Sub
和上一段代码相比不同之处仅仅是e = WorksheetFunction.Max(Range(area))这一句。
04
彩蛋,如何用公式提取最大值
在单元格F3中输入下列公式,三键确认并向下拖曳即可。
=INDEX(VLOOKUP(N(IF({1},ROW($1:$6))),IF({1,0},LARGE(COUNTBLANK(OFFSET($A$1,,,ROW($1:$27))),ROW($1:$27)),MOD(LARGE(IFERROR(COUNTBLANK(OFFSET($A$1,,,ROW($1:$27)))*1000+$A$2:$A$28,0),ROW($1:$27)),1000)),2,0),ROW(A1))
朋友们有兴趣来解析一下这条公式吗?欢迎留言区给我留言哦!
本期内容练习文件提取方式:
链接: https://pan.baidu.com/s/1_IaOdczjnGS51AXJ75frJw?pwd=3evq 提取码: 3evq
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”