function里有两个自变量,我需要第一个自变量所在格上边第leftradius行的那个值怎么办?
Function judgecontinous(MaxRow As Range, LeftRadius As Double) As Double
如下图,希望在C15这个格内输入=judgecontinous(A15,D1)之后(比如D1的值是5)
要输出cell(15-D1,1)的值,也就是A10的值,就是8。。
(图中B列没啥用,忽略)
怎么实现啊。。。。
---
目前一步想实现的功能是
例如:在C15这个格内输入=judgecontinous(A14,D1)之后(比如此时D1的值是5)
要输出单元格(14-D1,1)的值,也就是输出A9的值,就是8。。
又例如在C17这个格内输入=judgecontinous(B20,D1)之后(比如此时D1的值是2)
要输出单元格(20-D1,2)的值,也就是输出B18的值,就是18。。
问过程怎么写
---
函数里的两个变量,第一个变量提供最后输出值的一个参考位置,第二个变量提供向上偏移的量。。
比如第一个例子中,最后输出的A9中的列号A是因为第一个变量的位置A14的列号是A;行号9,是用第一个变量A14中的14减去第二个变量D1中的值5得到的9
---
感谢mote75和lu_zhao_long两位网友的回答,我之所以想用vba是因为我本来要编辑的公式很复杂,我提出的问题是我整套语句的一个小单元,(如果拿全部出来问,本来我会的部分会因为思路不一样干扰到我读代码),所以单提炼出这个问题来问。。。不过网友给出了一个思路,我如何才能看到offset的VB代码呢?
另外读两位网友的话觉得是不是使用vba有什么不好啊?那不好?
我怎么能看到你说的offset的VBA代码呢?
追答系统的内置函数是看不到代码的。不过在VBA中,range对象有一个OFFSET属性与表格公式的OFFSET函数功能基本一样。
比如,要对C15进行上述赋值,可以用如下代码:
[c15].Value = [A14].Offset(-[D1].Value, 0).Value目前一步想实现的功能是
例如:在C15这个格内输入=judgecontinous(A14,D1)之后(比如D1的值是5)
要输出单元格(14-D1,1)的值,也就是输出A9的值,就是8。。
又例如在C17这个格内输入=judgecontinous(B20,D1)之后(比如D1的值是2)
要输出单元格(20-2,2)的值,也就是输出B18的值,就是18。。
问过程怎么写
我只想知道你的自定义函数中两个变量 MaxRow 和 LeftRadius 之间的运算关系。
追问D1单元格里的数可以改的。。。。这两个例如是两次假设,之间没什么关系。。
函数里的两个变量,第一个变量提供最后输出值的一个参考位置,第二个变量提供向上偏移的量。。
比如第一个例子中,最后输出的A9中的列号A是因为第一个变量的位置A14的列号是A;行号9,是用第一个变量A14中的14减去第二个变量D1中的值5得到的9
如果我帮你写函数,我只想知道你的自定义函数中两个变量 MaxRow 和 LeftRadius 之间的运算关系。
请你不要写具体的单元格,就以 MaxRow 和 LeftRadius 来讲解!
我没看懂什么叫两个变量之间的运算关系。。
这样吧,你只看我需要实现的功能吧,就是我第一次追问中写的。。。。只要能实现功能剩下的都无所谓。。。。
唉!很想帮你!但是……
不过,仔细看了你的要求,实际上你可以使用 Excel 自身的函数就可以实现了。以你上面的例子为例子:
C15 单元格内的公式:=OFFSET(A14,-D1,0,1,1)
C17 单元格内的公式:=OFFSET(B20,-D1,0,1,1)
如果这两个公式能够满足你的要求的话,则建议你还是不要使用自定义函数的好!
看样子楼主还是觉得有点遗憾的!
是这样的,使用 VBA 的原则一般是:如果工作量太大或重复性的工作太多,不能够通过 Excel 自身的公式来完成的话,就可以考虑了。
但是,从 Excel2007 开始,通常的工作簿中是不能保存 VBA 代码的。弄不好不能使用。
针对楼主这两天的解释,我为你写了一段自定义函数(修正了一些错误):
Public Function Judgecontinous(MaxRow As Range, LeftRadius As Range) As Variant
If (MaxRow.Row - LeftRadius.Value) < 0 Then
Judgecontinous = "#N/A : Out of worksheet's range!"
Exit Function
Else
Judgecontinous = MaxRow.Offset(0 - LeftRadius.Value, 0)
End If
End Function