sarebbe possibile fare questo
Hai un problema con Excel? 
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
Vuoi Approfondire?