我想通过 MIN 函数内的地址(例如,C800)引用包含文本的最后一个单元格。你能帮忙吗?
Sub Set_Formula()
' -----------------------------
Dim lastRow As Long
Dim Lastcell As Range
Dim LC As String
Set Lastcell = Range("C:C").Find("*", Range("C1"), SearchDirection:=xlPrevious)
Set LC = Lastcell.Address()
'find last cell in the row
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim r As Long
For r = 2 To lastRow
If (Cells(r, 3).Value <> "") Then
Range("E8") _
= "=MIN(C2:LC)" 'The MIN function
End If
Next
End Sub
最佳答案
这不是我会这样做的方式,而是:
Range("E8") _
= "=MIN(C2:" & LC & ")" 'The MIN function
End If
并且,在您的代码中,由于 LC 是字符串而不是对象,请务必删除
Set
单词。当然,这会将静态公式放入
E8
.因此,如果列
C
更改(例如,在 LC 下方添加了更多数据),您需要将公式重写到工作表中。如果您更喜欢自动调整以更改 C 列中的行数的公式,您可以使用:
=MIN(INDEX($C$2:INDEX($C:$C,LOOKUP(9.9E+307,$C:$C,ROW($C:$C))),0,1))
编辑 : (公式说明)
该公式使用
LOOKUP
的一个特征函数查找最后一行。当lookup_value
大于 lookup_array
中的任何值, LOOKUP
将匹配 lookup_array
中的最后一个值.由于我们使用可选的 result_vector
论据,LOOKUP
返回匹配位置的值,即该行号。通过使用一个非常大的数字作为查找值,接近 Excel 中允许的最大数字,我们保证
lookup_array
中不会有更大的数字。然后我们使用
INDEX
创建以 C2
开头的数组的函数(或您为起始单元格输入的任何内容)并结束和 Cn
在哪里 n
是 LOOKUP
返回的行号功能。
关于excel - 引用公式中的单元格地址/引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379252/