gpt4 book ai didi

excel - 返回所选单元格值附近的单元格值索引的函数

转载 作者:行者123 更新时间:2023-12-03 03:10:18 25 4
gpt4 key购买 nike

我尝试编写一个接受数字 x_0 的函数和有序数向量y_0 , y_1 , y_2 ,...,并确定索引 k , k + 1这样y_k <= x_0 < y_k + 1

简单地说,y_k 的两个值之间值x_0下降。在下面的代码中我使用了 x_0=10y_0=2 , y_1=5 , y_2=7 , y_3=11 , y_4=13 , y_5=16 。该函数应输出 (2,3)作为 x_0=10 的值介于y_2=7之间和y_3=11 .

enter image description here

首先我尝试了这个,但我得到了

"Run time error 1004:Unable to get the Match property of the WorksheetFunction class"

在第四行。

Function Indic(x_0, y)
Set x_0 = Range("E10")
XValue = x_0.Value
y_k = Application.WorksheetFunction.Index(y, Application.WorksheetFunction.Match(x_0, XValue, 1))
y_k_1 = Application.WorksheetFunction.Index(y, Application.WorksheetFunction.Match(x_0, XValue, 1) + 1)
End Function

所以我想重写该函数而不使用“Match”函数,但我最终陷入困境,我不知道如何继续。

Function Indic(x_0, y)
Set x_0 = Range("E10")
XValue = x_0.Value
Set y = Range("E12:E17")
YValue = y.Value
End Function
Sub try()
With Worksheets("Sheet1")
Debug.Print (Indic(.Range("E10"), .Range("E12:E17")))
End With
End Sub

非常感谢任何帮助。

最佳答案

您不需要为此使用函数,您可以直接使用 Application.Match ,它会找到两者中较低的索引。上面的就是 LowerIndex + 1

Public Sub test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Tabelle3")

Dim MatchResult As Variant
MatchResult = Application.Match(ws.Range("E10").Value, ws.Range("E12:E17"), 1)

If IsError(MatchResult) Then
MsgBox "Matching failed", vbCritical
Exit Sub
End If

Dim LowerIndex As Double
LowerIndex = MatchResult - 1 'we need to subtract 1 because your index starts with `0` but row counting with `1`

Dim UpperIndex As Double
UpperIndex = LowerIndex + 1

Debug.Print LowerIndex, UpperIndex
End Sub

关于excel - 返回所选单元格值附近的单元格值索引的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57249324/

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