Condividi:        

Problema di copia dati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Problema di copia dati

Postdi Ricky0185 » 16/11/23 15:37

Salve, in questo file debbo riportare i dati di Foglio2 colonna B su colonna C di Foglio1 in corrispondenza dello stesso nome. Il problema è che se nel Foglio1 c’è una sola frequenza, il dato di colonna B di Foglio2 (stesso nome) lo “butta” giù sul nome successivo. Lanciando la macro (Ctrl+z) si vede. Ho provato ad aggiungere
Codice: Seleziona tutto
If cl.Offset(1,2).Value = "" Then GoTo 10
Ma resta tutto immobile.
Come risolvere? Ringrazio.
Cordiali saluti
R
Ricky0185
Utente Senior
 
Post: 266
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Problema di copia dati

Postdi Anthony47 » 16/11/23 16:57

Ad esempio (e assumendo che abbia dato tutti i termini del problema):
Codice: Seleziona tutto
Sub Trascrive2()
Dim I As Long, rNum As Long
Dim cNome As String
'
For I = 50 To 1 Step -1
    cNome = Sheets("Foglio2").Cells(I, "A").Value
    If cNome <> "" Then
        rNum = Evaluate("Max(IF(Foglio1!B1:B50=""" & cNome & """,ROW(B1:B50),""""))")
        If rNum > 0 Then
            Sheets("Foglio1").Cells(rNum, "C") = Sheets("Foglio2").Cells(I + 1, "B")
        End If
    End If
Next I
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di copia dati

Postdi Ricky0185 » 16/11/23 19:48

Ovviamente works like a charm. Però ..... però, il file è stato estremamente ridotto mentre quello originale ha nei due fogli molte più colonne (fino alla Q) e righe (fino alla 1883) e destinate ad aumentare e quindi per me, che frequento l'asilo dei macristi, è pittosto complicato adattare la tua macro.
Non hai mica una soluzione di riserva, senza step, senza tripli doppio apice, senza etc.? Magari adattando la mia macro che è basata solo sul raffronto di due celle dei due fogli.
Ricky0185
Utente Senior
 
Post: 266
Iscritto il: 10/12/19 20:38

Re: Problema di copia dati

Postdi Anthony47 » 17/11/23 09:37

Dove sta la difficoltà? Devi solo capire che l'istruzione con EVALUATE calcola la riga che contiene l'ultimo "Nome" esaminato (da foglio2 col. A) in Foglio1 col. B limitatamente all'intervallo B1:B50
Per cercare su piu' righe puoi tranquillamente usare
Codice: Seleziona tutto
        rNum = Evaluate("Max(IF(Foglio1!B1:B3000=""" & cNome & """,ROW(B1:B3000),""""))")
Questo cerchera' nell'intervallo B1:B3000; ma se vuoi puoi anche fare B1:B5000 e non ci saranno effetti tangibili sulla velocita' del codice.
Una volta trovata la posizione su Foglio1 (che e' alla riga +1 rispetto a rNum) puoi usare la variabile I che punta sulla riga in esame di Foglio2, e con Cells(I,"Q") prendi il valore di colonna Q (e' un esempio) e la variabile rNum per indirizzare il rigo di destinazione su Foglio1, es Cells(rNum+1,"L") per scrivere su col. L

Per modificare il numero di righe di Foglio2, anche qui puoi allungare a piacere il numero di righe da esaminare modificando il For I = 50 To 1 Step -1; a tal proposito (visto che Step -1 ti incute timore) ti dico che invece di fare il loop all'indietro (da 50 a 1, con Step -1 :D ) e' possibile fare il loop in avanti (For I = 1 To 50 con lo "step" di default a +1); il loop all'indietro faceva parte di un tentativo di usare il tuo approccio, poi abortito perche' altamente inefficiente (non ha senso cercare riga per riga se si puo' trovare con l'istruzione Evaluate)

Sono sicuro che con le suddette informazioni ce la farai ad adattare; ma all'occorrenza sai dove trovarci
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di copia dati

Postdi Ricky0185 » 18/11/23 08:20

Faticosamente ci sono riuscito.
Saluto e ringrazio
R
Ricky0185
Utente Senior
 
Post: 266
Iscritto il: 10/12/19 20:38

Re: Problema di copia dati

Postdi Anthony47 » 18/11/23 19:37

Bravo, non avevo dubbi...

Ho dimenticato di dire che pero' sei un bel sadico (o masochista) a usare per l'avvio delle tue macro la combinazione Contr-z, che nel linguaggio Excel significa "Annulla Operazione"; in pratica la "scorciatoia" piu' usata (almeno dal sottoscritto), più ancora di Contr-c (Copia)
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di copia dati

Postdi Ricky0185 » 19/11/23 08:07

Uso sempre quella perchè, "z" oltre a essere il tasto più vicino al Ctrl, me lo ricordo sempre. Con altri tasti dovrei ogni volta andare per tentativi o Strumenti-Macro-Macro-Esegui dopo averla scelta dalla lista. Anche perchè riunisco in una sola macro tante altre tant'è che a volte, se c'è un inghippo, faccio fatica a trovare la macro che lo genera
Buona Domenica
R
Ricky0185
Utente Senior
 
Post: 266
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Problema di copia dati":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti