vba loop attraverso la colonna e, se un certo valore di incremento

Ho una colonna C riempito con le celle vuote o che contengono il valore “OK”. Ho bisogno che ogni cella che contiene il testo “OK” sarà un cambiamento di valore incrementato 1,2,3 e così via. totale 2642 cellule

   C

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

Bisogno di guardare, come:
C

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

Fondamentalmente ho bisogno di autoincrement ma quando filtrare i dati autoincrement non funziona

Codice io uso autoincrements tutti i valori da non visualizzare il valore nella cella che contiene la parola “OK” come questo:

   C

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

Codice:

    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
InformationsquelleAutor Christine | 2013-03-06

 

2 Replies
  1. 1

    Il codice è vicino ma il problema è che il valore della cella è il controllo OK pensare che è una variabile. Per evitare questo, la prima cosa che voglio fare è mettere Option Explicit all’inizio di ogni modulo di dirvi quando non hai dichiarato le variabili.

    Ora tutto quello che dovete fare è fare clic su ‘OK’ una stringa come "OK". È inoltre necessario incrementare il numero all’interno della If istruzione altrimenti ti tieni incremento anche quando non si desidera.

    Edit: è possibile anche la vostra gamma un po ‘ più semplicemente da definire soltanto le cellule del Range metodo come in questo codice. La sua non è flessibile come utilizzo End ma se si dispone di una gamma fissa farà il trucco.

    Provare questo codice:

    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
    • vi ringrazio molto!
    • nessun problema 🙂
  2. 0

    Si può fare questo senza una macro:

    1. Cambiamento di stile di riferimento R1C1 (File scheda->Opzioni->Calcolo->stile di riferimento R1C1
    2. Selezionare la colonna
    3. Finestra di dialogo sostituisci (CtrlH)
    4. Sostituire tutti OK con =MAX(R1C1:R[-1]C)+1
    5. Se lo si desidera, copia e incolla speciale valori
    6. Deselezionare stile di riferimento R1C1

    In alternativa, è anche possibile fare questo senza R1C1 stile utilizzando un filtro automatico:

    1. Applicare un filtro automatico per la vostra colonna (CtrlMaiuscL)
    2. Filtro per OK
    3. Selezionare tutto filtrato OKs
    4. Immettere la seguente formula: =MAX($A$1:$A2)+1 inserire con CtrlInvio. È necessario regolare leggermente la formula – sostituire $A$1 con la prima riga del tuo data di inizio (o la riga di intestazione) e $A2 con la cella sopra la cella attiva – anche se è nascosto!
    5. Rimuovere il filtro automatico (CtrlMaiuscL) e copia/incolla speciale valori

Lascia un commento