gpt4 book ai didi

excel - 找到单元格 block 中最后使用的单元格

转载 作者:行者123 更新时间:2023-12-02 14:25:02 24 4
gpt4 key购买 nike

我需要一个公式来定位 block 中最后使用的单元格。上次使用的单元格我的意思是:

  1. 找到包含非空数据的最后一列(最右侧)
  2. 找到该列中包含非空数据的最低单元格
  3. 返回该单元格的地址

例如,在B2:I16 block 中:

Spreadsheet

该函数应返回:I15,而不是D16。我已经有一个正在尝试替换的 VBA UDF:

Public Function FindLast(r As Range) As String
Dim nLastRow As Long, nLastColumn As Long
Dim nFirstRow As Long, nFirstColumn As Long
Dim i As Long, j As Long

nLastRow = r.Rows.Count + r.Row - 1
nLastColumn = r.Columns.Count + r.Column - 1
nFirstRow = r.Row
nFirstColumn = r.Column

For i = nLastColumn To nFirstColumn Step -1
For j = nLastRow To nFirstRow Step -1
If Len(r(j, i)) > 0 Then
FindLast = r(j, i).Address(0, 0)
Exit Function
End If
Next j
Next i
End Function

因为工作表必须在无宏的环境中工作。

最佳答案

这个{数组公式}有效:

=ADDRESS(MAX(ROW(L1:P5)*(LEN(L1:P5)>0)*(COLUMN(L1:P5)=
MAX(COLUMN(L1:P5)*(LEN(L1:P5)>0)))),
MAX(COLUMN(L1:P5)*(LEN(L1:P5)>0)), 4)

Ctrl + Shift + Enter

显然第二项捕获了正确的列(这是简单的部分)。第一项包含第二项,以便在该列中搜索最后填充的行。

在下图中,它应用于范围 L1:P5 并产生了正确的结果 O4

enter image description here

到目前为止,我发现的唯一缺点是,如果范围包含错误单元格,则会出错,但从读取 OP 的 UDF 来看,这似乎不是问题。如果确实如此,一些额外的 IFERROR 将解决它:

=ADDRESS(MAX(ROW(L1:P5)*IFERROR(LEN(L1:P5)>0, 0)*(COLUMN(L1:P5)=
MAX(COLUMN(L1:P5)*IFERROR(LEN(L1:P5)>0,0)))),
MAX(COLUMN(L1:P5)*IFERROR(LEN(L1:P5)>0, 0)), 4)

Ctrl + Shift + Enter

编辑:ADDRESS函数添加了参数4,以从结果中删除$。我修改了用 r.Parent.Cells(j, i) 替换 r(j, i) 后,测试结果与 OP 的 UDF 相匹配。

关于excel - 找到单元格 block 中最后使用的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44467110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com