首先,我从这个网站学到了很多东西。说到更复杂的代码行,我仍然很绿。我将尽我所能来描述我想要做的事情,也许有人可以指出我正确的方向。
我在一系列中有两列:
Column A Column B
1 0
1 1
1 2
1 0
1 1
1 2
2 0
2 1
2 2
4 0
4 1
我想要做的是搜索列B,直到我到达列A序列的最后一个数字,然后将列A数字加一。所以我的最终结果应该是:
Column A Column B
1 0
1 1
1 2
2* 0
2* 1
2* 2
3 0
3 1
3 2
4 0
4 1
我尝试做类似
的事情Sub pdiddy()`
Do Until ActiveCell.Value = ""`
If ActiveCell.Value < 15 Then 'the column b sequence is only going to be between the numbers 0-15
ActiveCell.offest(1, 0).Value 1 'the column A sequence can increase until 99
End If
Loop
End Sub
如果数字序列在更改之前没有超过15,我想保留A列中的数字。 我希望我已经解释清楚了。我想确保没有A栏和A栏。 B组合相同。提前感谢大家帮助新手理解并更好地完成代码序列。此外,我试图编码标签,但我不认为我做得对,我现在道歉。 BSOV
答案 0 :(得分:1)
不是让以前的答案无法识别,而是代码可以满足您的要求。作为参考,我产生输出(与原件并排)。
代码:
Sub pdiddy()
Dim bank, cue
Dim r As Range
Set r = Range("b2") ' point to the first cell in column C: cueWrap
bank = Range("A2").Value - 1 ' starting value for bank ... code adds one in the first pass
cue = r.Value ' first value for cue
Do Until r.Value = ""
r.Select
If r.Value < r.Offset(-1, 0) Or r.Value >= 15 Then ' must wrap
If r.Value > 15 Then cue = (r.Value Mod 15) Else cue = 0
If r.Offset(0, -1) = r.Offset(-1, -1) Or cue = 0 Then
bank = bank + 1
End If
Else
cue = r.Value
End If
If bank > 127 Then Exit Do ' 127 banks available
If r.Offset(0, -1).Value > bank Then bank = r.Offset(0, -1).Value
r.Offset(0, -1).Value = bank ' overwrite bank
r.Value = cue ' overwrite cue
Set r = r.Offset(1, 0) ' next cell down
Loop
End Sub
输出:
---after--- --- before ----
Bank Cue Bank Cue
10 1 10 1
10 2 10 2
10 3 10 3
10 4 10 4
10 5 10 5
10 6 10 6
10 7 10 7
10 8 10 8
10 9 10 9
10 10 10 10
10 11 10 11
10 12 10 12
10 13 10 13
10 14 10 14
10 15 10 15
11 1 10 16
11 2 10 17
11 3 10 18
11 4 10 19
11 5 10 20
11 6 10 21
11 7 10 22
11 8 10 23
11 9 10 24
11 10 10 25
11 11 10 26
11 12 10 27
11 13 10 28
11 14 10 29
11 15 10 30
12 1 10 31
12 2 10 32
13 1 11 1
13 2 11 2
13 3 11 3
13 4 11 4
13 5 11 5
13 6 11 6
13 7 11 7
13 8 11 8
13 9 11 9
13 10 11 10
13 11 11 11
13 12 11 12
13 13 11 13
13 14 11 14
13 15 11 15
14 1 11 16
14 2 11 17
15 1 12 1
15 2 12 2
15 3 12 3
15 4 12 4
15 5 12 5
15 6 12 6
15 7 12 7
15 8 12 8
15 9 12 9
15 10 12 10
15 11 12 11
15 12 12 12
15 13 12 13
15 14 12 14
15 15 12 15
16 1 12 16
16 2 12 17
16 3 12 18
16 4 12 19
16 5 12 20
16 6 12 21
16 7 12 22
16 8 12 23
16 9 12 24
16 10 12 25
16 11 12 26
16 12 12 27
16 13 12 28
16 14 12 29
16 15 12 30
17 1 12 31
17 2 12 32
21 1 21 1
21 2 21 2
21 3 21 3
21 4 21 4
21 5 21 5
21 6 21 6
21 7 21 7
21 8 21 8
21 9 21 9
答案 1 :(得分:0)
这个问题有点不清楚;我将回答我认为您要问的问题:“每当B'中的序列重置'时,我想将A列中的相应数字递增一个”。
Sub pdiddy()
Dim Aval, Bval
Dim r as Range
Set r = Range("B1") ' point to the first cell in column B
Aval = 1 ' starting value for A
Bval = r.Value
Do Until r.Value = "" ' <<<< edited
If r.Value < Bval Then ' sequence wraps
Aval = Aval + 1 ' increment A
if Aval > 99 Then Exit Do ' "column A sequence can increase until 99"
End If
r.offset(0, -1).Value = Aval ' set the value in the column to the left
Bval = r.Value ' <<<< added
set r = r.Offset(1,0) ' next cell down
Loop
End Sub
如果不符合您的意图,请在评论中说明。特别是,当你的问题(A,B?)达到15
的值时,你的问题应该采取什么行动。