我想引用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
答案 0 :(得分:0)
使用lastRow的值:Range("E8") = "=MIN(C2:C" & lastRow & ")"
答案 1 :(得分:0)
这不是我要怎么做,而是:
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
会在匹配位置返回该行号的值。
通过使用一个非常大的数字作为lookup_value,该数字接近Excel中允许的最大数字,我们确保lookup_array
中不会有更大的数字
然后,我们使用INDEX
函数创建一个数组,该数组以C2
(或您在起始单元格中输入的内容)开头,并以Cn
结尾,其中n
是LOOKUP
函数返回的行号。