Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB]eseguire una macro registrata in excel su tutto il foglio

    Salve ragazzi, come potete notare sono nuovo in questo forum e vorrei innanzitutto salutare tutti. Premetto che sono praticamente ignorante in materia ma avrei bisogno di un aiutino da voi esperti per creare una macro in excel che mi permetta in automatico di copiare i dati contenuti nelle righe pari al fianco dei dati contenuti nelle righe dispari. Faccio un esempio. In questo foglio di excel vi è l'anagrafica e i dati completi di una persona. Purtroppo però questi dati sono messi su due file del foglio e non su una riga intera. Esempio:

    1)Marco rossi - anni 28 - commerciante
    2)roma - 06111111
    3) Fabio Bianchi - anni 36 - studente
    4)Milano - 02111111

    Dunque, quello che vorrei fare io e spostare il contenuto della 2° (seconda) riga al fianco della riga numero 1, così come spostare il contenuto della riga numero 4 al fianco della riga numero 3, dal momento che fanno riferimento alla stessa persona, ed avere i dati della persona su una riga unica. Naturalmente potri fare un copia ed incolla ma dovrei farlo per singolo rigo, e dal momento che le righe in questione sono circa 65000 l'impresa è veramente titanica. Io ho provato ad registrare una macro effettuando il copia/incolla ma naturalmente questa macro è limitata alle sole righe su cui è registrata

    Sub Macro2()
    '
    ' Macro2 Macro
    ' Macro registrata il 18/05/2005 da fabio
    '

    '
    Range("A2:N2").Select
    Selection.Copy
    Range("O1").Select
    ActiveSheet.Paste
    Rows("2:2").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Range("A3:N3").Select
    Selection.Copy
    Range("O2").Select
    ActiveSheet.Paste
    Rows("3:3").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Range("A4:N4").Select
    Selection.Copy
    Range("O3").Select
    ActiveSheet.Paste
    Rows("4:4").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Range("A5").Select
    End Sub


    In effetti la macro così registrata funziona, solo che la esegue sulle stesse righe. In effetti a me servirebbe che questa macro facesse il suo lavoro su tutto il listato. Io adesso provo ad inserirla qui, se qualcuno puo darci un'occhiata e modificarla per le mie esigenze mi farebbe un favore. Grazie

  2. #2
    sigh....non pensavo fosse una domanda così difficile.

  3. #3
    Ecco un esempio adattato al tuo problema:
    codice:
    Public Sub Compatta()
        Dim i As Integer
        
        'indice riga = 1
        i = 1
        
        'esce dal loop se trova la cella vuota
        Do Until Cells(i, 1) = ""
            'ricopia valori
            Cells(i, 4) = Cells(i + 1, 1)
            Cells(i, 5) = Cells(i + 1, 2)
            
            'elimina riga seguente
            Rows(i + 1).Delete
            
            'incrementa indice riga
            i = i + 1
        Loop
    End Sub
    Ciao
    Chi non cerca trova.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.