sarebbe possibile fare questo



  • sarebbe possibile fare questo?
    di rocco (utente non iscritto) data: 10/04/2015 15:08:00

    salve a tutti
    sono di nuovo qui a chiedervi aiuto su una operazione che vorrei fare con excel ma dato le mie poche conoscenze volevo sapere se è una cosa possibile da fare oppure no; vado a spiegare quello che vorrei fare:
    ho una serie di dati, esempio
    3
    24
    69
    14
    58
    36
    0
    8
    12
    1
    23
    74
    84
    96
    5
    1
    101
    57
    45
    3....ecc

    questi dati vengono inseriti uno alla volta nella stessa colonna (i dati non sono "conosciuti" tutti fin da subito,vengono inseriti uno alla volta da una modalita casuale)

    quello che vorrei fare io è che ad ogni numero che vado ad inserire questo mi venga scritto sulla stessa colonna naturalmente una riga sotto l'altra ma ogni volta che incontra il numero 1 continui si a scriverlo sulla stessa colonna ma dovrebbe cominciare a scriverlo anche sulla colonna vicina.
    riprendendo la sequenza che ho fatto esempio sopra, il risultato dovrebbe essere questo
    3 1 1
    24 23 101
    69 74 57
    14 84 45
    58 96 3....ecc
    36 5
    0 1
    8 101
    12 57
    1 45
    23 3...ecc
    74
    84
    96
    5
    1
    101
    57
    45
    3....ecc

    quindi, qualcuno sa se una cosa del genere è possibile farla?



  • di Mister_x (utente non iscritto) data: 10/04/2015 17:14:49

    ciao

    in base ai tuoi dati da inserire nel foglio questa sub()

    10 1 1 1
    11 5 10 5
    1 2 54 7
    5 8 2145 fine
    2 257
    8
    1
    10
    54
    2145
    257
    1
    5
    7
    fine


    ti allego il mio di prova

    ciao
     
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:A10000")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    On Error GoTo Fine
    Dim colon As Long, Nrig As Long
    colon = Cells(1, Columns.Count).End(xlToLeft).Column
    If Target.Value = 1 Then
      colon = colon + 1
    End If
    If colon > 1 Then
    Nrig = Cells(Rows.Count, colon).End(xlUp).Row + 1
    If Nrig = 2 And Target = 1 Then
     Cells(1, colon) = Target
    Else
     Cells(Nrig, colon) = Target
    End If
    End If
    Fine:
    Application.EnableEvents = True
    End Sub
    






  • di Mister_x (utente non iscritto) data: 10/04/2015 17:27:34

    riciao

    ho controllato bene adesso i tuoi dati e ho visto cosa intendevi fare,
    apportata modifica alla sub()
    PS sarebbe sempre utile allegare un file con dati inseriti
    comunque adesso la sub() e' questa che trovi nel file allegato

    10 1 1
    20 20 5
    30 30 6
    1 40 end
    20 1
    30 5
    40 6
    1 end
    5
    6
    end



    ciao
     
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:A10000")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    On Error GoTo Fine
    Dim colon As Long, Nrig As Long, i As Long
    colon = Cells(1, Columns.Count).End(xlToLeft).Column
    If Target.Value = 1 Then
      colon = colon + 1
    End If
    If colon > 1 Then
    For i = 2 To colon
    Nrig = Cells(Rows.Count, i).End(xlUp).Row + 1
    If Nrig = 2 And Target = 1 Then
     Cells(1, i) = Target
    Else
     Cells(Nrig, i) = Target
    End If
    Next i
    End If
    Fine:
    Application.EnableEvents = True
    End Sub
    
    






  • di rocco (utente non iscritto) data: 10/04/2015 17:38:11

    grazie per la risposta Mister_x
    ma non ho capito cosa devo fare con questa sub
    ho copiato la sub e incollata con il visual basic di excel
    ma poi vado ad aprire la macro dal menu strumenti e non la trovo
    riapro visual basic e c'è ma se la mando in esecuzione mi chiede con un altra finestra che macro voglio eseguire



  • di rocco (utente non iscritto) data: 10/04/2015 17:43:52

    il mio excel non apre i file xlsm



  • di Mister_x (utente non iscritto) data: 10/04/2015 18:54:37

    ciao rocco

    questa sub() o macro come la chiami, si attiva automaticamente quando tu fai una variazione ad una cella del foglio dove e' inserita, e si esegue solamente se tu la variazione la fai in colonna A:A.
    PS sarebbe sempre molto utile allegare un vostro file dove state lavorando, e scrivere la versione di excel che state usando
    ti riallego il mio file in versione 2003 e inferiore

    comunque se ci sono problemi allega il tuo file con tutto quello che e' inserito, cosi possiamo valutare la procedura da attuare

    ciao






  • di rocco (utente non iscritto) data: 10/04/2015 19:35:54

    il nuovo file xls che hai allegato ora lo poso aprire e ho verificato che fa proprio quello che vorrei fare
    vorrei solo capire come fare per inserire la sub nel mio "progetto" o foglio
    esempio:
    apro excel
    vado sul menu file e scelgo nuovo
    ora che devo fare?



  • di alfrimpa data: 10/04/2015 21:26:00

    Ciao Rocco

    Devi aprire l'editor di VBA (Alt+F11)
    In alto a sinistra c'è la finestra di progetto dove vedi elencati tutti i fogli della cartella di lavoro.
    Fai doppio clic sul foglio che ti interessa
    Nella finestra a destra in alto ci sono due tendine
    In quella a sinistra scegli Worksheet ed in quella a destra scegli Change
    Tra le due righe che compaiono copia e incolla il codice di Mister_x.
    In questo modo ogni volta che sul foglio di lavoro si verifica una modifica (Change) verrà eseguito il codice.

    Alfredo





  • di rocco (utente non iscritto) data: 10/04/2015 22:45:37

    grazie per l'isegnamento

    vi volevo chiedere se al posto della variabile "1" che serve per far scrivere sulle nuove colonne
    si potesse usare la formatazione della cella?
    ad esempio se la cella interior.colorindex=3 allora...... comincera a scrivere anche sulla nuova colonna



  • di rocco (utente non iscritto) data: 11/04/2015 19:40:13

    non c'e proprio la possibilita di utilizzare la formatazione di una cella?
    ne volevo solo la conferma cosi provo a trovare un altra strada



  • di rocco (utente non iscritto) data: 15/04/2015 16:36:44

    richiesta risolta con l'apertura di una nuova discussione e riformulando la riciesta d'aiuto
    un grazie infinite a tutti chi mi ha aiutato sopratutto a Mister_x che è un GRANDE!



  • di rocco (utente non iscritto) data: 15/04/2015 16:37:41

    RISOLTO