Condividi:        

EXCELL Allineare celle uguali contenute in 2 colonne diverse

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

EXCELL Allineare celle uguali contenute in 2 colonne diverse

Postdi c10antonio » 26/10/16 14:24

Salve a tutti ragazzi,
non riesco a trovare una soluzione a questo mio problema... vi spiego..

Ho in pratica 2 listini ognuno con codice, titolo, prezzo e varianti, composta da circa 4000 righe.
La cosa che hanno in comune questi due listini (almeno per l' 80%) è il titolo.
L'ordine però è diverso per i due listini.

A me servirebbe una funzione, o una macro, che allinei tra i due listini i titoli uguali (se ci sono) portando con se i rispettivi codici prezzo e varianti.

Spulciando qui sul forum ho trovato una problematica uguale alla mia ma applicando la macro consigliata excell si incarta e non processa tale macro.

Vi allego qui sul forum premendo il link in basse il file excel con la macro già inserita.

http://www.casadelvigile.it/Prova_allineamento1_macro.xlsm

La macro inserita è appunto questa:
Codice: Seleziona tutto
Sub Allinea()
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
Ws2.Columns("A:L").Clear
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Ws1.Range(Cells(1, 1), Cells(UR1, 5)).Copy Destination:=Ws2.Range("A1")
Ws1.Range(Cells(1, 6), Ws1.Cells(1, 8)).Copy Destination:=Ws2.Range("I1")
For RR1 = 2 To UR1
CodB = Ws1.Range("B" & RR1).Value
    For RR2 = 2 To UR1
    If Ws1.Range("I" & RR2).Value = CodB Then Ws1.Range(Cells(RR2, 6), Cells(RR2, 8)).Copy Destination:=Ws2.Range("I" & RR1)
    Next RR2
Next RR1
End Sub



Spero tanto che qualcuno mi possa indicare come mai excel va subito in (non risponde)
Secondo voi devo semplicemente aspettare oppure sbaglio il codice??

Grazie infinite a chiunque partecipi a darmi una mano.

Antonio C.
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Sponsor
 

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi ricky53 » 26/10/16 15:22

Ciao,
non è chiara la struttura dei dati, ci sono diverse righe vuote e ... altro che va chiarito.

DOMANDE:
I due listini in quali colonne si trovano?
Il dato su cui fare la ricerca è univoco nei listini?

quando un dato è stato trovato ... perchè continui a ciclare su RR2 fino al valore UR1 invece di uscire dal ciclo?

Come vedi devi fornirci altre informazioni in modo che noi ti si possa aiutare veramente e non procedere per tentativi

COMMENTO:
nel codice davanti a Cells(..) va SEMPRE scritto WS1 o WS2 in base al foglio di appartenenza del dato.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 26/10/16 15:35

Ciao Ricky grazie molte per la risposta.
Purtroppo non mi intendo di scrittura codice per le macro e quello che vedi l'ho preso da un'altra discussione qui sul forum ed ho cercato di riadattarlo.

Passando alle tue domande sul listino:
- Le colonne vuote erano una sola che adesso ho cancellato e ricaricato il file.. le altre sono vuote nelle prime celle ma più in
basso hanno del testo;
- Con questa nuova impostazione il primo listino va dalla colonna A alla colonna F, il secondo da G a K;
- Il dato su cui fare la ricerca è il titolo (colonna B) del primo listino. Il secondo listino è da riordinare andando ad allineare (sulle stesse righe) i titoli con il primo listino e portando con se anche le righe delle altre colonne (G, I, J, K). A questo punto capisco che tutte le colonne del primo listino tranne quella del titolo potrebbero essere eliminate e reinserite una volta allineato il tutto.
- Riguardo il codice, ti ripeto non ne capisco nulla, questo è quello che ho trovato qui sul forum su un problema identico al mio.

Grazie ancora per la risposta.
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 26/10/16 21:49

Ragazzi,
HO RISOLTO..

VI ringrazio tanto perchè alla fine la soluzione l'ho trovata qui sul forum con il codice per la macro scritta da Anthony47 in un caso analogo.. Modificando leggermente il codice perchè erano 2 colonne da allineare invece nel mio caso una sola si sono allineati al primo tentativo..

Grazie infinite..

Se può essere utili inserisco il codice utilizzato:
Codice: Seleziona tutto
Dim J As Long
Sub reshit()
Dim VArrA, VArrF, LastA As Long, LastF As Long, DestSh As String
Application.ScreenUpdating = False
DestSh = "Foglio2"           '<<< Il foglio dove sara' creato il nuovo listato

J = 1
LastA = Cells(Rows.Count, 1).End(xlUp).Row
LastF = Cells(Rows.Count, 6).End(xlUp).Row
VArrA = Range("A2").Resize(LastA - 1, 1).Value
VArrF = Range("F2").Resize(LastF - 1, 4).Value
Sheets(DestSh).Cells.ClearContents
Range("A1").Resize(LastA, 4).Copy Sheets(DestSh).Range("A1")
aaaa = coReshit(VArrF, 6, Sheets(DestSh).Range("A1").Resize(LastA + J, 1))
Application.ScreenUpdating = True
MsgBox ("Completato")
End Sub

Function coReshit(ByRef myArr, ByVal mycol As Long, ByRef myArea As Range)
Dim I As Long, myMatch, ColCod As Long, startI As Range

J = 1
ColCod = LBound(myArr, 2)
Set startI = myArea.Cells(1, 1).Offset(20000, 0).End(xlUp)
For I = LBound(myArr, 1) To UBound(myArr, 1)
    myMatch = Application.Match(myArr(I, ColCod), myArea, False)
    If Not IsError(myMatch) Then
        myArea.Cells(myMatch, mycol) = myArr(I, ColCod)
        myArea.Cells(myMatch, mycol + 1) = myArr(I, ColCod + 1)
        myArea.Cells(myMatch, mycol + 2) = myArr(I, ColCod + 2)
        myArea.Cells(myMatch, mycol + 3) = myArr(I, ColCod + 3)
    Else
        startI.Offset(J, 0) = myArr(I, ColCod)
        startI.Offset(J, mycol - 1).Value = myArr(I, ColCod)
        startI.Offset(J, mycol + 0).Value = myArr(I, ColCod + 1)
        startI.Offset(J, mycol + 1).Value = myArr(I, ColCod + 2)
        startI.Offset(J, mycol + 2).Value = myArr(I, ColCod + 3)
        J = J + 1
    End If
Next I
End Function


Elimino il file che avevo caricato.

Grazie ancora a tutti

Saluti Antonio C.
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi Anthony47 » 27/10/16 01:02

Ciao antonio, benvenuto nel forum.
Lieto di scoprire che hai risolto da solo, immagino che sia stata una bella soddisfazione.
Alla prossima!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 27/10/16 09:18

Ciao Anthony,
La soddisfazione per me è quella di arrivare allo scopo, e ci devo arrivare, a costo di studiare da zero il problema o scandagliare i motori di ricerca in qualsiasi lingua e fino all'ultima pagina.

La soddisfazione per quanto sono riuscito a fare però deve essere tua.. E' tuo il codice e ti faccio i miei complimenti!!

Ne approfitto però per chiedere una variazione:

(Se ho capito bene il codice) Vorrei che quando la variabile I trovi cella vuota, J restituisca J - 1 (se piena) altrimenti cella vuota... a parole... se la cella dove si esegue la ricerca è vuota la cella da allineare deve contenere il valore allineato precedentemente (se esiste, se lo ha trovato), se invece anch'esso è vuoto allora cella vuota.

Non so se sono riuscito a spiegarmi e se è fattibile...

Ti ringrazio comunque tanto per la disponibilità, e ringrazio tutti.

Saluti

Antonio C.
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 27/10/16 12:12

Rivedendo il codice mi sono reso conto che nel post precedente ho erroneamente scritto l'inverso di quello che volevo scrivere..
Correggendo:
Vorrei che quando la variabile J trovi cella vuota, I restituisca I-1 (se piena) altrimenti cella vuota... a parole... se la cella dove si esegue la ricerca (colonna A) è vuota la cella da allineare (Colonna F) deve contenere il valore allineato precedentemente (se esiste, se lo ha trovato), se invece anch'esso è vuoto allora cella vuota.
Bisognerebbe inserire un altro ciclo if credo ma non so dove mettere le mani.

Purtroppo non è facile da spiegare e mi stupisco di come voi siate comunque in grado di recepire spiegazioni così frammentate.

Vi ringrazio ancora per l'aiuto e vi auguro una buona giornata
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi Anthony47 » 27/10/16 14:01

Non credo che il file pubblicato sia quello aggiornato (visto che avevi scritto "Le colonne vuote erano una sola che adesso ho cancellato e ricaricato il file", ma nessun link e' stato poi allegato); infatti il risultato dell'esecuzione della macro e' un foglio che non somiglia per niente al risultato atteso.
Vorrei anche sapere, nel nuovo file che pubblicherai, quali sono le colonne che appartengono al primo listino e quali quelle del secondo listino.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 27/10/16 14:33

Salve Anthony.. riallego il file, lo avevo cancellato:
http://www.casadelvigile.it/Prova_allineamento1_macro_pronto%20per%20allineamento1.xlsm

Questo file contiene anche la macro utilizzata ed il risultato ottenuto nel foglio 2.

AL primo listino appartengo le colonne da A a D, il secondo da E ad I

Questa macro funziona per quello che mi serve ma potrebbe essere perfetta se si potessero applicare delle modifiche:
Una è quella scritta sopra cioè: quando una riga della colonna A è vuota, le righe del secondo listino dovrebbero contenere quanto contenuto nella cella prima se questa è piena, altrimenti cella vuota (per esempio se A25 è vuota allora in F25 deve esserci F24 se questa è piena altrimenti cella vuota pure per F25)

Un'altra sarebbe per me capire nel codice qual valore identifica l'intervallo dei due listini.. nel senso: quale valore indica quante colonne portare con se del primo listino e del secondo listino?

Spero di aver spiegato decentemente.
Purtroppo non è facile nemmeno spiegarlo.. immagino scriverlo!!

Grazie mille
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi ricky53 » 27/10/16 14:47

Ciao,
leggi con attenzione quanto ti ha scritto Anthony.

Io avevo provato il codice che avevi riportato all'inizio e per terminare l'elaborazione ha impiegato 4 minuti e 10 secondi (sul mio PC con 4 Gb di Ram e Dual Core I5)

Qualche cosa va rivista anche alla luce delle tue nuove affermazioni che mi leggerò con attenzione appena potrò ma non prima di sera.

Sicuramente Anthony sicuramente ti proporrà una soluzione e presto.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi ricky53 » 27/10/16 15:05

Ciao,
il nuovo codice è velocissimo perchè lavora con le ARRAY (Matrici) (Ulteriore conferma che il codice di Anthony è POTENTE !!!)

Ho visto il foglio 2 dopo l'esecuzione di questo nuovo codice e mi sono chiesto:
1. i valori ci colonna "H" sono l'arrotondamento di quelli di colonna "C". Confermi?
2. i valori di colonna "G" come sono stati calcolati?
Nel foglio 2 a riga "7" trovo i seguenti dati:
Coltello Caltagirone lama inox 241 16 152275857755 14,8 22 Coltello caltagirone lama inox 241 16 31 15 1
come è stato calcolato il valore "31"


Riepilogando a cosa serve:
a. riportare la descrizione in colonna "F" quando c'è già la colonna "A" che contiene gli stessi dati
b. il valore arrotondato in colonna "H"
c. i dati di colonna "I" cosa rappresentano?

Non ho ancora analizzato il discorso che hai fatto sui dati vuoti vedi il tuo esempio di cella A25 ... lo farò al più presto
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 27/10/16 15:30

Ciao Ricky grazie mille per la risposta.

Ho caricato nuovamente il file riordinato e funzionante (in parte). Il codice con le modifiche che ho apportato funziona... ma potrebbe funzionare meglio.

La funziona principale che deve svolgere il codice è la seguente.

La colonna A ed il rispettivo listino quindi colonne A,B,C,D,E devono rimanere fissi.
Le celle della colonna G (secondo listino) si devono allineare alle celle UGUALI della colonna A del primo listino portandosi con se le celle della altre colonne H,I,J,K
La macro inserita fa benissimo questo lavoro UNICO PROBLEMA è che non so dove intervenire per portare anche la colonna K perchè con questo codice mi porta solo H,I,J del secondo listino.

Fin qui va apportata solo questa piccola modifica dopo di che il codice va già benissimo.

L'altra richiesta che, se fattibile, sarebbe perfetta, è quella di:
Nel caso in cui una cella della colonna A sia vuota (esempio sul file: cella A1467) la cella G1467 dovrebbe contenere quanto c'è nella cella G1466. se G1466 è vuota allora deve essere vuota anche G1467.

Meglio di così mi viene difficile spiegarlo.

Per quanto riguarda le altre colonne non hanno regole o funzioni da svolgere.. sono solo da riportare.

Vi ricordo di riscaricare il file da uno dei due link.. c'è lo stesso file in entrambi i link postati in precedenza.

VI ringrazio ancora.

Saluti
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi ricky53 » 27/10/16 16:37

Ciao,
ecco il codicei modificato per riportare anche i dati in colonna "K" del Foglio1

Codice: Seleziona tutto
Option Explicit

Sub reshit()
Dim J As Long, VArrA, VArrG, VArrH, LastA As Long, LastF As Long, LastG As Long, DestSh As String, aaaa
    Application.ScreenUpdating = False
    DestSh = "Foglio2"           '<<< Il foglio dove sara' creato il nuovo listato

    J = 1
    Sheets("Foglio1").Select ' <<===== Aggiunta
    LastA = Cells(Rows.Count, 1).End(xlUp).Row
    LastG = Cells(Rows.Count, 7).End(xlUp).Row
    VArrA = Range("A2").Resize(LastA - 1, 1).Value
    VArrG = Range("G2").Resize(LastG - 1, 5).Value ' <<===== Modificata
    Sheets(DestSh).Cells.ClearContents
    Range("A1").Resize(LastA, 6).Copy Sheets(DestSh).Range("A1")
   
    aaaa = coReshit(VArrG, 7, Sheets(DestSh).Range("A1").Resize(LastA + J, 1))
   
    Application.ScreenUpdating = True
    MsgBox ("Completato")
End Sub

Function coReshit(ByRef myArr, ByVal mycol As Long, ByRef myArea As Range)
    Dim I As Long, J As Long, myMatch, ColCod As Long, startI As Range

    J = 1
    ColCod = LBound(myArr, 2)
    Set startI = myArea.Cells(1, 1).Offset(20000, 0).End(xlUp)
    For I = LBound(myArr, 1) To UBound(myArr, 1)
        myMatch = Application.Match(myArr(I, ColCod), myArea, False)
        If Not IsError(myMatch) Then
            myArea.Cells(myMatch, mycol) = myArr(I, ColCod)
            myArea.Cells(myMatch, mycol + 1) = myArr(I, ColCod + 1)
            myArea.Cells(myMatch, mycol + 2) = myArr(I, ColCod + 2)
            myArea.Cells(myMatch, mycol + 3) = myArr(I, ColCod + 3)
            myArea.Cells(myMatch, mycol + 4) = myArr(I, ColCod + 4) ' <<===== Aggiunta
        Else
            startI.Offset(J, 0) = myArr(I, ColCod)
            startI.Offset(J, mycol - 1).Value = myArr(I, ColCod)
            startI.Offset(J, mycol + 0).Value = myArr(I, ColCod + 1)
            startI.Offset(J, mycol + 1).Value = myArr(I, ColCod + 2)
            startI.Offset(J, mycol + 2).Value = myArr(I, ColCod + 3)
            startI.Offset(J, mycol + 3).Value = myArr(I, ColCod + 4) ' <<===== Aggiunta
            J = J + 1
        End If
    Next I
End Function


Non sono entrato nel merito del codice visto che hai detto che funzionava.

Puoi, cortesemente rispondere alle domande che ti avevo posto prima ... per capire io cosa viene fatto e cercare di risolvere la questione rimasta
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 27/10/16 16:52

Ciao Ricky,

Ho provato il codice da te modificato e funziona alla grande.. inserisce anche la colonna mancante..

Venendo alle domande:
1. i valori di colonna "H" sono l'arrotondamento di quelli di colonna "C". Confermi?
Più o meno. dove erano diversi li ho riportati uguali, ma non hanno a che fare con le operazione che deve svolgere la macro.

2. i valori di colonna "G" come sono stati calcolati?
Nessuno dei valori presenti è stato calcolato sono stati solamente riportati. I due listini erano su due fogli diversi ed io li ho uniti in uno solo riportando quantità codici prezzi al rivenditore ed al pubblico, varianti (relationship) ecc

3. Nel foglio 2 a riga "7" trovo i seguenti dati.... come è stato calcolato il valore "31"
Ripeto 31 rappresenta la quantità disponibile.. non è stato calcolato ma solo copiato e incollato

4. a cosa servono:
b. il valore arrotondato in colonna "H"
c. i dati di colonna "I" cosa rappresentano?
Queste rientrano sempre nella risposta al punto 3

Comunque le risposte appena date fanno riferimento come nome delle colonne al file postato precedentemente

Se si prova a rileggere il mio ultimo post riferito all'ultima versione del file caricato credo che sia descritto bene l'ultima funzione che vorrei ottenere da tale macro.

Non smetterò mai di ringraziarvi perchè gia questo risultato mi aiuta un mondo.

Grazie Grazie Grazie
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi Anthony47 » 27/10/16 23:48

Nel caso in cui una cella della colonna A sia vuota (esempio sul file: cella A1467) la cella G1467 dovrebbe contenere quanto c'è nella cella G1466. se G1466 è vuota allora deve essere vuota anche G1467

Ho interpretato che questa descrizione sia relativa al contenuto di Foglio2.
Inserita anche la modifica per gestire fino a colonna K, il codice diventa:
Codice: Seleziona tutto
Dim J As Long
Sub reshit()
Dim VArrA, VArrH, LastA As Long, LastF As Long, DestSh As String
Application.ScreenUpdating = False
DestSh = "Foglio2"           '<<< Il foglio dove sara' creato il nuovo listato

J = 1
LastA = Cells(Rows.Count, 1).End(xlUp).Row
LastG = Cells(Rows.Count, 7).End(xlUp).Row
VArrA = Range("A2").Resize(LastA - 1, 1).Value
VArrG = Range("G2").Resize(LastG - 1, 5).Value                  '5 per col K
Sheets(DestSh).Cells.ClearContents
Range("A1").Resize(LastA, 6).Copy Sheets(DestSh).Range("A1")
aaaa = coReshit(VArrG, 7, Sheets(DestSh).Range("A1").Resize(LastA + J, 1))
'Manipolazione colonna A
Dim VaLb As Long
VArrA = Range("A2").Resize(LastA - 1, 7).Value
VaLb = LBound(VArrA, 1)
For I = VaLb To UBound(VArrA, 1)
    If VArrA(I, 0 + VaLb) = "" Then
        Sheets(DestSh).Cells(2 + I - VaLb, 7) = Sheets(DestSh).Cells(1 + I - VaLb, 7)
    End If
Next I
Application.ScreenUpdating = True
MsgBox ("Completato")
End Sub

Function coReshit(ByRef myArr, ByVal mycol As Long, ByRef myArea As Range)
Dim I As Long, myMatch, ColCod As Long, startI As Range
'
J = 1
ColCod = LBound(myArr, 2)
Set startI = myArea.Cells(1, 1).Offset(20000, 0).End(xlUp)
For I = LBound(myArr, 1) To UBound(myArr, 1)
    myMatch = Application.Match(myArr(I, ColCod), myArea, False)
    If Not IsError(myMatch) Then
        myArea.Cells(myMatch, mycol).Value = myArr(I, ColCod)
        myArea.Cells(myMatch, mycol + 1) = myArr(I, ColCod + 1)
        myArea.Cells(myMatch, mycol + 2) = myArr(I, ColCod + 2)
        myArea.Cells(myMatch, mycol + 3) = myArr(I, ColCod + 3)
        myArea.Cells(myMatch, mycol + 4) = myArr(I, ColCod + 4)     'Colonna K
       
    Else
        startI.Offset(J, 0) = myArr(I, ColCod)
        startI.Offset(J, mycol - 1).Value = myArr(I, ColCod)
        startI.Offset(J, mycol + 0).Value = myArr(I, ColCod + 1)
        startI.Offset(J, mycol + 1).Value = myArr(I, ColCod + 2)
        startI.Offset(J, mycol + 2).Value = myArr(I, ColCod + 3)
        startI.Offset(J, mycol + 3).Value = myArr(I, ColCod + 4)    'Col K
        J = J + 1
    End If
Next I
End Function

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 28/10/16 11:29

Perfetto Anthony, non ci posso credere!!

Per perfezionare ancora di più ho applicato la regola:
Nel caso in cui una cella della colonna A sia vuota (esempio sul file: cella A1467) la cella G1467 dovrebbe contenere quanto c'è nella cella G1466. se G1466 è vuota allora deve essere vuota anche G1467

non più alla colonna G ma alle colonne I,J,K con la seguente modifica:

Codice: Seleziona tutto
If VArrA(I, 0 + VaLb) = "" Then
        Sheets(DestSh).Cells(2 + I - VaLb, 9) = Sheets(DestSh).Cells(1 + I - VaLb, 9)
        Sheets(DestSh).Cells(2 + I - VaLb, 10) = Sheets(DestSh).Cells(1 + I - VaLb, 10)
        Sheets(DestSh).Cells(2 + I - VaLb, 11) = Sheets(DestSh).Cells(1 + I - VaLb, 11)
    End If


Ora però per renderlo completo vorrei chiedere un'ultima cosa, allego un'immagine per capire il risultato che dovrebbe venir fuori:
Immagine

Sarebbe possibile dire alla macro che se la cella della colonna A è vuota (A1410, A1411 ... A1416) di andare a cancellare le celle I,J,K corrispondenti all'ultima cella della colonna A trovata piena A1409, come riportato in figura?
Questo per ottenere nel secondo listino l'ordine esatto del primo listino.

Ho provato ad agire sul primo ciclo if ma non ottengo i risultati desiderati perchè credo che andrebbe riorganizzato.

Se è possibile provare a fare qualcosa è bene altrimenti vi ringrazio ugualmente tantissimo per quanto già ottenuto.

Volevo inoltre sapere se è disponibile una sezione donazioni per poter sostenere il forum con una piccola donazione.

Saluti Antonio C
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi Anthony47 » 29/10/16 23:10

Avviso: a me le richieste a spizzichi e bocconi fanno venire voglia di passare alla discussione successiva...
Ultima variazione: aggiungi questa istruzione in questa posizione
Codice: Seleziona tutto
        Sheets(DestSh).Cells(2 + I - VaLb, 11) = Sheets(DestSh).Cells(1 + I - VaLb, 11)
        If VArrA(I - 1, VaLb) <> "" Then Sheets(DestSh).Cells(1 + I - VaLb, 9).Resize(1,   3).ClearContents    '<<< AGGIUNGI
    End If
Next I

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi c10antonio » 30/10/16 13:44

Buongiorno e buona Domenica,
Funziona alla grande!! Grazie!!

Mi dispiace però essermi giocato tutte le variazioni, io non conoscevo le potenzialità delle Macro di excel ne tanto meno la vostra grande disponibilità.
Avevo fatto la prima richiesta pensando che fosse già troppo come richiesta e non mi sono sentito di approfittarne commissionando tutta la mia esigenza dal principio alla fine sia perchè non sapevo dove si potesse arrivare sia perchè per me non era una cosa semplice e non pensavo si potesse ottenere su un forum in tale modo.

Comunque ripeto, vi ringrazio tantissimo per quanto fatto fino a qui.

Al massimo per altri eventuali interventi al codice vedrò di studiarmi questo linguaggio avendo già una discreta base di linguaggio java studiato all'università qualche anno fa, che però non è materia della mia specialistica.

Grazie ancora saluti Antonio C.
S.O.: Windows 10
Excel: Versione 2013
c10antonio
Utente Junior
 
Post: 13
Iscritto il: 26/10/16 09:25

Re: EXCELL Allineare celle uguali contenute in 2 colonne div

Postdi Anthony47 » 31/10/16 18:44

Vabbe', sei nuovo e quindi "fino alla fine di Ottobre" ti sara' tutto perdonato...

Avevi parlato di una piccola donazione, ma noi non accettiamo ne' piccole ne' grosse donazioni (probabilmente cambieremmo atteggiamento di fronte a "ingenti" donazioni :diavolo: ); se vuoi essere generoso credo che in questi giorni drammatici sara' facile trovare una organizzazione fidata che raccolglie fondi per i terremotati.

Alla prossima!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "EXCELL Allineare celle uguali contenute in 2 colonne diverse":


Chi c’è in linea

Visitano il forum: Nessuno e 51 ospiti