0

空のセルまたは値「OK」を含むセルで満たされた列 C があります。テキスト「OK」を含むすべてのセルが増分値1、2、3などに変更される必要があります.合計2642セル

   C

- 1 [empty]
- 2 [empty]
- 3 [OK]
- 4 [empty]
- 5 [OK]
- 6 [empty]

次のようにする必要があります: C

- 1 [empty]
- 2 [empty]
- 3 [1]
- 4 [empty]
- 5 [2]
- 6 [empty]

基本的には自動インクリメントが必要ですが、フィルターデータの自動インクリメントが機能しない場合

私が使用するコードは、次のように「OK」という単語を含むセルに値を表示しないことで、すべての値を自動インクリメントします。

   C

- 1 [1]
- 2 [2]
- 3 [empty]
- 4 [4]
- 5 [empty]
- 6 [6]

コード:

    Sub Macro1()
    mynumber = 1
    Dim r As Range, cell As Range
    Set r = Range(Range("C1"), Range("C2642").End(xlDown))
    For Each cell In r
      If cell.Value = OK Then cell.Value = mynumber
       mynumber = mynumber + 1
    Next
    End Sub
4

2 に答える 2

1

あなたのコードは近いですが、あなたが抱えている問題は、セルの値がOK変数であると考えてチェックしていることです。これを回避するには、最初Option Explicitに各モジュールの先頭に配置して、変数を宣言していないことを知らせます。

あとは、'OK' を のような文字列にするだけです"OK"。また、ステートメント内で番号をインクリメントする必要があります。Ifそうしないと、不要な場合でもインクリメントし続けます。

Range編集:このコードのようにメソッドでセルを定義するだけで、範囲をもう少し簡単にすることもできます。使用するほど柔軟ではありませEndんが、固定範囲があればうまくいきます。

このコードを試してください:

Option Explicit

Sub Macro1()
    Dim r As Range, cell As Range, mynumber As Long

    Set r = Range("C1:C2642")

    mynumber = 1
    For Each cell In r
        If cell.Value = "OK" Then
            cell.Value = mynumber
            mynumber = mynumber + 1
        End If
    Next
End Sub
于 2013-03-06T07:36:23.097 に答える
0

マクロなしでこれを行うことができます:

  1. R1C1 参照スタイルに変更 ( [ファイル] タブ-> [オプション] -> [計算] -> [ R1C1 参照スタイル]
  2. 列全体を選択
  3. ダイアログの置換 ( Ctrl- H)
  4. すべてOK=MAX(R1C1:R[-1]C)+1
  5. 必要に応じて、特別な値をコピーして貼り付けます
  6. R1C1 参照スタイルのチェックを外す

または、オートフィルターを使用して、R1C1 スタイルなしでこれを行うこともできます。

  1. 列にオートフィルターを適用します ( Ctrl- Shift- L)
  2. フィルターOK
  3. フィルタリングされたすべてOKのを選択
  4. 次の式を入力してください: =MAX($A$1:$A2)+1- で入力してCtrlくださいEnter。数式を少し調整する必要があり$A$1ます。データが開始する最初の行 (またはヘッダー行) と$A2置き換え、アクティブ セルの上のセルと置き換えます (非表示であっても)。
  5. Ctrlオートフィルター ( - Shift- ) を削除し、L必要に応じて特別な値をコピーして貼り付けます
于 2013-03-06T07:46:11.573 に答える