Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Associazioni voci tramite VBA

Ultimo Aggiornamento: 21/03/2017 09:34
Post: 325
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
18/03/2017 09:44

Buongiorno a tutti,

dovrei eseguire un copia incolla di dati da un foglio ad un'altro tramite VBA

nel file esempio che ho allegato ho tre fogli
nel primo "Codici" ci sono i dati che devo copiare in modo univoco
sul foglio "filtro" tramite userform e commandbutton e fin quin nessun problema

pero dovrei associare una volta copiati sul foglio "Filtro"
i valori corrispondenti che sono presenti nel foglio "Legenda"

spero di essere stato abbastanza chiaro

PS: una curiosità perche copiando i dati univoci i primi due codci
li riporta uguali 45.23 non me ne dovrebbe copiare uno solo ?!

GRAZIE
Excel 2007 - 2010
Post: 1.125
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/03/2017 10:06

Ciao
vecchia storia quella del filtro univoco; il fatto è che ha bisogno di una intestazione e quindi excel prende il primo valore (45.23) sia come intestazione che come dato univoco.

Pertanto correggi nel seguente modo:
Private Sub CommandButton1_Click()
Sheets("Filtro").Range("A:B").ClearContents
Sheets("Codici").Select
Dim UR, Val As Long
UR = Range("A" & Rows.Count).End(xlUp).Row
Val = Application.WorksheetFunction.CountA(Range("A2:A" & UR)) 'Conta quanti valori sono presenti
Range("A1:A" & Val).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("Filtro").Range("A5"), Unique:=True
Sheets("Filtro").Select
UR = Range("A" & Rows.Count).End(xlUp).Row
For i = 6 To UR
    Cod = Cells(i, 1)
    With Sheets("Legenda").Range("B:B")
        Set c = .Find(Cod, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(i, 2) = Sheets("Legenda").Cells(c.Row, 3)
        End If
    End With
Next
End Sub


Ti ricordo che è possibile evitare di selezionae i fogli per fare le operazioni volute, ma questa è un'altra storia.

saluti
Domenico
Win 10 - Excel 2016
Post: 333
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
20/03/2017 19:45

grazie

il codice funziona egregiamente ma adesso che ho inserito l'intera legenda mi sono accorto che molte descrizioni riferite ai codici
sono molto lunghi è possibile copiare solo i primi 10-15 caratteri ?

immagino che bisogna utilizzare le stringhe etc..

ho provato cosi

descrizione = Left(C.Row, 30)
Sheets("STAMPA1").Cells(i, 2) = Sheets("INIZIO").Cells(descrizione, 2)

ma non va
[Modificato da krashone 20/03/2017 19:50]
Excel 2007 - 2010
Post: 1.128
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
21/03/2017 09:34

Ciao

non so da dove siano usciti i nomi di quei fogli; nel tuo esempio erano codici-legenda-filtro, quindi nella mia macro, al posto di

Cells(i, 2) = Sheets("Legenda").Cells(c.Row, 3)

metti

Cells(i, 2) = Left(Sheets("Legenda").Cells(c.Row, 3), 15)

dove 15 è il numero dei caratteri che vuoi riportare

saluti
[Modificato da dodo47 21/03/2017 09:37]
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:09. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com