我是论坛的新手。我最近才开始使用VBA。但是,我已经遇到了问题。
想象一下下表
x y z j
a b a b c a b c d a b c
25 22 20 26 25 24 18 28 27 24 18 30
我从x开始,我想使用x和y之间的单元格数作为处理第3行中数字的规则。
在x和y的情况下。达到y需要两个步骤。所以我用25和22工作。循环用y重新启动,它需要3步才能达到z,所以我使用20和25循环重启z ... 4步,所以24和24,用j重启。
我特别在努力确定步骤数并使用下一步操作的步骤数。
答案 0 :(得分:0)
不完全确定你打算做什么,以及"回答"这取决于你需要做什么,但你可以用几个语句迭代这个表:
以下是使用For Each .. Next
的示例实现:
Sub Test()
Dim rng As Range
Dim firstCl As Range
Dim c As Integer 'Counts the columns
Dim i As Integer 'counts the intervals
Dim cl As Range
Set rng = Range("A1:L3") 'modify as needed
c = 1
For Each cl In rng.Rows(1).Cells '## Iterate each cell in first row
If rng(1, c).Value <> "" Then
MsgBox i & " cells since the last non-empty cell", vbInformation
i = 0
End If
i = i + 1
c = c + 1
Next
End Sub
答案 1 :(得分:0)
尝试使用第二行中的标记“a”检测间隔的最后一项和第一项:标记为“a”的项目是当前间隔的第一项。上一个间隔的最后一项是当前间隔的第一项之前的一项。最后一个间隔的最后一项是整行的最后一项。
Option Explicit
Sub DetectFirsAndLast()
Dim rng As Range
Dim cell As Range
Dim formula As String
Set rng = Range("A1:L3")
'Identify first and last item of interval in row 2
For Each cell In rng.Rows(2).Cells
'Apply formula to first item
formula = "=1+2"
If cell.Value = "a" Then
rng.Cells(3, cell.Column).formula = formula
End If
'Apply formula to last item
formula = "=2+3"
If cell.Column <> 1 And cell.Value = "a" Then
rng.Cells(3, cell.Column - 1).formula = formula
End If
If cell.Column = rng.Columns.Count Then
rng.Cells(3, cell.Column).formula = formula
End If
Next
End Sub