0

まず、私はこのサイトから何年にもわたって多くのことを学んできました。より複雑なコード行に関しては、私はまだかなりグリーンです。私がやろうとしていることを説明するために最善を尽くします。誰かが私を正しい方向に向けることができるかもしれません.

次のようなシリーズに2つの列があります。

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

私がしたいのは、列 A シーケンスの最後の番号に到達するまで列 B を検索し、列 A の番号を 1 ずつ変更することです。したがって、私の最終結果は次のようになります。

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 と列 B の組み合わせが存在しないことを確認したいと思います。初心者がコードシーケンスを理解し、より良くなるのを助けてくれてありがとう。また、これにタグを付けようとしましたが、正しくやったとは思いません。申し訳ありません。BSOV

4

2 に答える 2

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
于 2013-06-10T17:25:10.317 に答える