Condividi tramite

Creare una macro che cerchi, copi ed incolli i valori in una determinata cella.

Anonimo
2021-05-18T14:08:40+00:00

Ciao a tutti, sto sistemando un dataset ed ho deciso di utilizzare una macro per rendere il tutto più veloce, ma il problema è che non riesco a farla funzionare in modo corretto.

Sub string_validation()

For i = 1 To 100

    If Range("C" & i).Value = "Male" Then

        Range("C" & i + 1).Copy Range("B1:B21" )

    Else

    End If

    Next i

End Sub

Quello che dovrebbe fare è cercare il termine "Male" nella colonna C, per esempio lo trova in C3 ed in C4 dovrebbe esserci il valore espresso in numeri, copiare quest'ultimo e metterlo in B1, e poi andare avanti finché non riempie tutto il range B1:B21. Il problema è che mi copia l'ultimo valore trovato su tutto il range.  Avrei voluto fare un doppio loop ed eseguirlo in contemporanea, ma a quanto pare in Excel puoi eseguire una routine alla volta. Qualcuno di voi saprebbe dirmi come posso procedere?

Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2021-05-18T15:16:05+00:00

Ciao Kurt,

Ciao a tutti, sto sistemando un dataset ed ho deciso di utilizzare una macro per rendere il tutto più veloce, ma il problema è che non riesco a farla funzionare in modo corretto.

Sub string_validation()

For i = 1 To 100

    If Range("C" & i).Value = "Male" Then

        Range("C" & i + 1).Copy Range("B1:B21" )

    Else

    End If

    Next i

End Sub

Quello che dovrebbe fare è cercare il termine "Male" nella colonna C, per esempio lo trova in C3 ed in C4 dovrebbe esserci il valore espresso in numeri, copiare quest'ultimo e metterlo in B1, e poi andare avanti finché non riempie tutto il range B1:B21. Il problema è che mi copia l'ultimo valore trovato su tutto il range.  Avrei voluto fare un doppio loop ed eseguirlo in contemporanea, ma a quanto pare in Excel puoi eseguire una routine alla volta. Qualcuno di voi saprebbe dirmi come posso procedere?

Forse, prova qualcosa del genere:

'========>>

Option Explicit

'-------->>

Public Sub string_validation()

    Dim i As Long, iCtr As Long

    With ActiveSheet

        For i = 1 To 100

            If .Range("C" & i).Value = "Male" Then

                iCtr = iCtr + 1

                .Range("C" & i + 1).Copy Destination:=.Range("B" & iCtr)

            Else

            End If

        Next i

    End With

End Sub

'<<========

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-05-18T17:18:25+00:00

    Ciao Kurt,

    Grazie mille, ha funzionato alla perfezione.

    Ti ringrazio per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-05-18T17:14:24+00:00

    Grazie mille, ha funzionato alla perfezione.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-05-18T15:21:23+00:00

    vuoi creare una macro che cerchi, copia e incolla i valori in una determinata cella?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-05-18T14:39:36+00:00

    Ciao, comunidade Benvenuto nella Microsoft. Piacere di aiutarti. Sono Sandro, un consulente indipendente.

    La risposta è stata utile?

    0 commenti Nessun commento