Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Inserimento righe su area variabile

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

Inserimento righe su area variabile

Postdi Ricky0185 » 20/03/21 13:16

Salve, con una macro copio da un foglio un certo numero di righe che corrispondono ad un determinato criterio (ma questo poco importa) e le incollo su altro foglio in area definita da titolo in cella colonna A (che è poi il criterio).
Questa operazione viene eseguita su diversi tipi di criteri e per ciascuno di essi vengono copiate le righe intercettate sull'altro foglio in corrispondenza dello stesso titolo.
Il problema è che il numero di righe intercettate sul foglio origine è variabile e pertanto sul foglio target le righe libere in corrispondenza stesso titolo possono non bastare per ricevere quelle copiate da foglio origine o essere eccessive.
Cerco il modo per far sposare le due aree (allarga o riduci), probabilmente la soluzione è sotto gli occhi, ma non ho gli occhiali adatti per vederla. Perciò aspetto qualche suggerimento.
Un Buon Fine Settimana
R
Ricky0185
Utente Junior
 
Post: 86
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Inserimento righe su area variabile

Postdi Anthony47 » 20/03/21 19:25

probabilmente la soluzione è sotto gli occhi, ma non ho gli occhiali adatti per vederla. Perciò aspetto qualche suggerimento.
Non so se noi abbiamo gli occhiali; il problema e' che non abbiamo il tuo pc e da lontano non vediamo proprio niente :D :D

Insomma io non ho capito come i dati si dovrebbero incastrare... alla cieca potrei suggerire di inserire su foglio target tante righe quante sono da quelle copiare, e alla fine eliminare quelle vuote, ad esempio tramite un filtro che selezioni solo le celle vuote

Ma se ci fai un disegnino o un paio di screenshot magari ci viene qualche idea piu' complicata :lol:

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

Re: Inserimento righe su area variabile

Postdi Ricky0185 » 20/03/21 20:07

Mannaggia, anche tu ci vedi poco, o meglio, ricordi poco: io son sempre quello dell'XP ed Off2003.
Con il disegno sono una frana perciò pulisco un pò il file e lo pubblico.
Anthony47 ha scritto:potrei suggerire di inserire su foglio target tante righe quante sono da quelle copiare

saperne il numero, il fatto è che le vedi solo dopo che la macro ha estratto dal foglio1 i record cercati e li ha ricopiati sul foglio2.
Grazie comunque e a presto
R
Ricky0185
Utente Junior
 
Post: 86
Iscritto il: 10/12/19 20:38

Re: Inserimento righe su area variabile

Postdi Marius44 » 21/03/21 12:04

Salve a tutti
Riporto l'inizio del tuo post
con una macro copio da un foglio un certo numero di righe che corrispondono ad un determinato criterio (ma questo poco importa)

Non credo che sia poco importante conoscere il criterio. Mi spiego.
Se il criterio fosse: copia UNA riga che risponde al criterio, beh allora sai che ne importi solo una.
Se il criterio fosse: scorri una tabella e copia TUTTE le righe che rispondono al criterio, beh allora sai QUANTE ne importi.
Nel primo caso inserisci UNA riga nel foglio destinazione
Nel secondo caso inserisce TANTE righe QUANTE sono le righe che hai selezionato.

Sempre se non ho capito male perchè la tua ultima risposta ("saperne il numero, il fatto è che le vedi solo dopo che la macro ha estratto dal foglio1 i record cercati e li ha ricopiati sul foglio") mi lascia perplesso.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 576
Iscritto il: 07/09/15 22:00

Re: Inserimento righe su area variabile

Postdi Ricky0185 » 21/03/21 21:43

Ecco il file ripulito da fogli, nomi e ridotta la macro a una sola ricerca. Con la ricerca di tutti i criteri, ColonnaA-Foglio2, tra sovrapposizioni e sbordi si rischiano allucinazioni, come questa. La macro pesca dal Foglio1 e riversa nel Foglio2 (ma va?).
Si potrebbe ricorrere a qualche trick da inserire nella macro, tipo inserire 30 righe per ogni criterio e poi alla fine eliminare quelle rimaste vuote, però speriamo in "idee più complicate". Ma anche senza, ringrazio egualmente per l'attenzione prestatami.
Buona serata
R
Ricky0185
Utente Junior
 
Post: 86
Iscritto il: 10/12/19 20:38

Re: Inserimento righe su area variabile

Postdi Anthony47 » 21/03/21 23:59

Ho visto ben altre cose...

Non vorrei che tu l'avessi semplificata troppo e non fosse cosi' immediato l'adattamento alla situazione reale; comunque la mia proposta e' questa:
Codice: Seleziona tutto
Sub CopiaDistanza()
Dim CL As Range, iRow As Integer
Dim cArr(), cInd As Long, I As Long
ReDim cArr(1 To 4, 1 To 1)
'
Sheets("Foglio1").Select
Dim Area As Range
Set Area = Sheets("Foglio1").Range("b364:b574")
For Each CL In Area 'Range("b364:b574")
    If CL.Value = "Bcc Roma" Then
        'Copia la riga in cArr:
        cInd = UBound(cArr, 2)
        For I = 1 To 4
            cArr(I, cInd) = CL.Offset(0, -2 + I).Value
        Next I
        ReDim Preserve cArr(1 To 4, 1 To cInd + 1)
    End If
Next CL
iRow = 23
While Worksheets("Foglio2").Cells(iRow, 2).Value <> ""
    iRow = iRow + 1
Wend
'Inserisce le righe in Foglio2:
Worksheets("Foglio2").Rows(iRow).Resize(cInd).Insert Shift:=xlDown
'Scrive il contenuto di cArr:
Worksheets("Foglio2").Cells(iRow, 2).Resize(UBound(cArr, 2), UBound(cArr)).Value = _
   Application.WorksheetFunction.Transpose(cArr)
End Sub

Insomma nella prima fase si cercano le righe e si copiano in un array in memoria; alla fine si inseriscono le righe (a quel punto sappiamo bene quante ce ne servono) e copiamo l'array in Foglio2

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

Re: Inserimento righe su area variabile

Postdi Ricky0185 » 22/03/21 12:17

Aramaico puro, però funziona alla perfezione.
Sto provando ad estendere la ricerca agli altri criteri e per il momento nisba, ho poco tempo perciò continuerò stasera.
Pensi che basti cambiare i riferimenti alle celle interessate od anche ad altre cose? Nel secondo caso allora mi riservirà aiuto.
Ciao e grazie
R
Ricky0185
Utente Junior
 
Post: 86
Iscritto il: 10/12/19 20:38

Re: Inserimento righe su area variabile

Postdi Anthony47 » 22/03/21 16:10

Aramaico puro, però funziona alla perfezione
Azz... e pensare che ci ho pure messo ricchi commenti...

Puoi tranquillamente aggiungere altre condizioni di filtro, tipo
Codice: Seleziona tutto
If CL.Value = "Bcc Roma" and CL.Offset(0,-1).Value > DataDiFiltro Then

L'array cArr viene sempre riempito di N righe, e questo N viene usato per aggiungere righe sul foglio di destinazione.

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

Re: Inserimento righe su area variabile

Postdi Ricky0185 » 22/03/21 22:04

Ho appena incominciato a studiare l'aramaico (la tua macro) ed al primo chiarimento richiesto mi rispondi in sumerico.
Pensavo che bastasse ripetere in sequenza tutta la procedura della tua macro tante volte quanti sono i criteri, cambiando in ogni ripetizione solo il nome del criterio e la cella d'inizio da cui riversare le voci.
Il metodo funziona, ma bisogna adattare tutte le corrispondenze tra Foglio1 e Foglio2 e preparare la macro in modo che parta dall'ultimo criterio e su fino al primo, altrimenti se parte dal primo sballa tutti i numeri di riga. Ho provato con 3 criteri e funziona.
Adatto il file e te lo invio in caso di altre "idee più complicate". Il Foglio2, che in realtà ha un altro nome, è la base di molti altri fogli.
A presto
R
Ricky0185
Utente Junior
 
Post: 86
Iscritto il: 10/12/19 20:38

Re: Inserimento righe su area variabile

Postdi Anthony47 » 23/03/21 01:46

Credevo che volessi filtrare aggiungendo altri criteri, invece ho capito ora che sono criteri sostitutivi a quelli che hai usato nel file esempio.
Allora, a spanne, mi pare che devi mettere all'interno di un ciclo le istruzioni a parire da For Each CL In Area fino alla Worksheets("Foglio2").Cells(iRow, 2).Resize(UBound(cArr, 2), UBound(cArr)).Value = etc etc (incluse)

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


Torna a Applicazioni Office Windows


Topic correlati a "Inserimento righe su area variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti