Excel 我需要用偏移函数循环一个公式,直到单元格为空
我需要循环下面的公式,直到包含日期的列“B”为空。 我被卡住了,在“B”列中没有更多日期之前,我似乎无法编写VBA代码来执行循环。公式是使用那些有收益的日期来平滑收益率 我希望任何人都能帮助我。提前谢谢Excel 我需要用偏移函数循环一个公式,直到单元格为空,excel,vba,Excel,Vba,我需要循环下面的公式,直到包含日期的列“B”为空。 我被卡住了,在“B”列中没有更多日期之前,我似乎无法编写VBA代码来执行循环。公式是使用那些有收益的日期来平滑收益率 我希望任何人都能帮助我。提前谢谢 A B C D 5 Factor Date Yield Input 6 3 May-10 .25 7 1 Jun-10 8 2 Jul-10 9 3 Aug-
A B C D
5 Factor Date Yield Input
6 3 May-10 .25
7 1 Jun-10
8 2 Jul-10
9 3 Aug-10 0.2000
10 1 Sep-10
11 2 Oct-10
12 3 Nov-10 0.2418
13 1 Dec-10
14 2 Jan-11
15 3 Feb-11 0.3156
16 1 Mar-11
17 2 Apr-11
Sub-IsNumeric()
'如果(ISNUMBER(C6),C6,,
如果Application.IsNumber(范围(“c6”).值),则
范围(“d6”)。值=范围(“c6”)
'如果(C6Sub Test01()
将m、r、单元格作为对象
Dim n为布尔型
设置m=板材(“板材1”)。单元(1,2)
做
设置m=m.Offset(1,0)
设置r=m。调整大小(20,1)
n=错误
对于r中的每个单元格
如果是cell.Formula“”,则
n=正确
如果结束
下一个细胞
MsgBox m.公式
循环直到n=False
端接头
这将从B1开始,一直循环到B列,直到循环遇到下面有20个连续空白单元格的单元格。当循环到达下面有20个连续空白单元格的单元格时,它将偏移到下面的第一个空白单元格并停止。如果我理解正确
您需要将硬编码范围转换为变量
您正在正确使用偏移量
我知道while/wend已经过时了,对不起:)
Sub-IsNumeric()
dim tc as范围
设置tc=range(“B6”)'这始终是B列,但行在循环中不断变化
'如果(ISNUMBER(C6),C6,,
而tc“
如果应用程序.IsNumber(tc.offset(0,1).Value),则
tc偏移量(0,2).值=tc偏移量(0,1)
'如果(C6),请重新格式化,使您的代码看起来与文本不同,并使缩进清楚地显示what.CEMG下嵌套的内容,我们很乐意提供帮助,但通过适当的缩进,这将更容易理解。我需要IF语句从D6循环到D17。因此,我希望循环在“B”列停止一次是空的,只要“B”列中有数据,我就希望If语句进行计算。
Sub IsNumeric()
' IF(ISNUMBER(C6),C6,
If Application.IsNumber(range("c6").Value) Then
range("d6").Value = range("c6")
' IF(C6<C5,((OFFSET(C6,2,0)-OFFSET(C6,-1,0))*A6/3+OFFSET(C6,-1,0)),
If range("c6").Select < range("c5").Select Then
range("d6").Value = range("c6").Offset(2, 0).Select - range("c6").Offset(-1, 0).Select * (range("a6").Select / 3) + range("c6").Offset(-1, 0).Select
' IF(C6<>C7,((OFFSET(C6,1,0)-OFFSET(C6,-2,0))*(A6/3)+OFFSET(C6,-2,0)),"")))
If range("c6").Select <> range("c7").Select Then
range("d6").Value = (range("c6").Offset(1, 0).Select) - range("c6").Offset(-2, 0).Select * (range("a6").Select / 3) + range("c6").Offset(-2, 0).Select
Else
range("d6").Value = ""
End If
End If
End If
End Sub
Sub Test01()
Dim m, r, cell As Object
Dim n As Boolean
Set m = Sheets("Sheet1").Cells(1, 2)
Do
Set m = m.Offset(1, 0)
Set r = m.Resize(20, 1)
n = False
For Each cell In r
If cell.Formula <> "" Then
n = True
End If
Next cell
MsgBox m.Formula
Loop Until n = False
End Sub
Sub IsNumeric()
dim tc as range
set tc = range("B6") 'this is always column B, but the row keeps changing in the loop
'IF(ISNUMBER(C6),C6,
while tc <> ""
If Application.IsNumber(tc.offset(0,1).Value) Then
tc.offset(0,2).Value = tc.offset(0,1)
'IF(C6<C5,((OFFSET(C6,2,0)-OFFSET(C6,-1,0))*A6/3+OFFSET(C6,-1,0)),
If tc.offset(0,1) < tc.offset(-1,1) Then
tc.offset(0,2).Value = tc.Offset(2, 1) - tc.Offset(-1, 1) * (tc.offset(0,-1) / 3) + tc.Offset(-1, 1)
'IF(C6<>C7,((OFFSET(C6,1,0)-OFFSET(C6,-2,0))*(A6/3)+OFFSET(C6,-2,0)),"")))
If tc.offset(0,1) <> tc.offset(1,1) Then
tc.offset(0,2) = tc.offset(1,1) - tc.offset(-2,1) * (tc.offset(0,-1) / 3) + tc.offset(-2,1)
Else
tc.offset(0,2) = ""
End If
End If
End If
set tc=tc.offset(1,0)
wend
End Sub