在Excel文件及其相关列中查找特定值
我是非常新的VBA,我想find一个行的最小值,并通过创build一个命令button返回其列号。 例如,在一行中:3 2 2 4 5 6 7我需要返回列号2,即使2出现两次。
我的代码目前看起来像这样:
Private Sub CommandButton1_Click() Dim myrange As range Dim answer As Double Dim f As Range Dim column1 As Integer Set myrange = Worksheets("Solver VBA").range("C94:T94") answer = Application.WorksheetFunction.Min(myrange) MsgBox answer Set f = Worksheets("Solver VBA").Cells.Find(answer).Column MsgBox f End Sub
我不断得到运行时错误'91'和最后一行的黄色突出显示。
编辑:我已经按照build议尝试了这些步骤,它的工作原理(但它给了我列号3而不是2,这也是我的情况):
Private Sub CommandButton1_Click() Dim myrange As range Set myrange = Worksheets("Solver VBA").range("C94:T94") Dim answer As Double answer = Application.WorksheetFunction.Min(myrange) MsgBox answer Private Sub CommandButton1_Click() Dim column1 As Integer column1 = Application.Match(answer, myrange, 0) + 2 MsgBox column1 End Sub
我build议这样做(保留所有的variables):
Private Sub CommandButton1_Click() Dim myrange As Range Set myrange = Worksheets("Solver VBA").Range("C94:T94") Dim answer As Double answer = Application.Min(myrange) Dim column1 As Integer column1 = Application.Match(answer, myrange, 0) + 2 Dim f As Range Set f = Application.Index(myrange.EntireRow, 1, column1) End Sub
如果你只需要范围(包含值的单元格),你也可以直接使用类似的东西:
Set f = Worksheets("Solver VBA").Range("B94").Offset(, Application.Match(Application.Min(Worksheets("Solver VBA").Range("C94:T94")), Worksheets("Solver VBA").Range("C94:T94"), 0))
或者像我的评论,只是得到列号:
column1 = Application.Match(Application.Min(Worksheets("Solver VBA").Range("C94:T94")), Worksheets("Solver VBA").Range("C94:T94"), 0) + 2
应该自我解释。 但是,如果你还有什么问题,就问一下;)
考虑
- 调光时间长
- 放下
Set
- 使用.Column
- 保持
MsgBox
你看到.Columns你得到一个Range对象。 与.Column你得到一个长。
更改
MsgBox f
至
MsgBox f.address