decifrare serie in colonna
Hai un problema con Excel? 
decifrare serie in colonna
di chris (utente non iscritto) data: 03/03/2015 15:44:21
Salve a tutti,
sono un utilizzatore di excel, che finora è riuscito a trovare soluzioni ai problemi che mi si ponevano senza ricorrere a macro.
Ora ho però un problema che non riesco a risolvere. Magari qualcuno di voi mi può dare un'idea o un colpo di mano.
Vorrei analizzare e decifrare una colonna che ha una serie lunga di zero e uno, tipo la seguente:
1
0
0
1
0
1
1
1
0
1
ecc
Alla fine mi piacerebbe avere come risultato una tabella che mi dica come si alternano gli zero e gli uno, tipo così
1=1
0=2
1=1
0=1
1=3
0=1
1=1
ecc
o più semplicemente 1 2 1 1 3 1 1, sapendo che la serie inizia con 1.
Grazie per un aiuto.
di Vecchio Frac data: 03/03/2015 18:36:56
Io non so farlo con le formule.
Ma il codice proposto può diventare una funzione da inserire nel foglio e richiamabile in cella facendola precedere dal segno di uguale.
Analizza la sequenza in colonna A (la prima cella è di intestazione) e posta il risultato in cella C2 (in C1 c'è un'intestazione di "risultato"). Tutto molto personalizzabile :o)
Option Explicit
Sub find_sequences()
Dim regex As Object, item As Object, items As Object
Dim my_range As Range, compact_range As Variant
Set my_range = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
compact_range = Join(WorksheetFunction.Transpose(my_range), "")
Range("C2").ClearContents
Set regex = CreateObject("VBScript.Regexp")
With regex
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = "0+|1+"
End With
If regex.Test(compact_range) Then
For Each item In regex.Execute(compact_range)
Cells(2, "C") = Cells(2, "C") & " " & Len(item)
Next
End If
Set regex = Nothing
End Sub |
di chris (utente non iscritto) data: 03/03/2015 21:43:08
Grazie mille per l'indicazione che proverò domani. Ti farò sapere
di chris (utente non iscritto) data: 04/03/2015 07:32:39
Scusa, Vecchio Frac, ma ti devo disturbare nuovamente. Ti ringrazio per il codice che funziona egregiamente.
Stamattina ho provato a modificare il codice in modo che il risultato sia in sequenza nella colonna C (nel senso che il primo dato di analisi sia in C1 il secondo in C2 e così via) ma mi rendo conto che non sono in grado, date le mie scarse conoscenze di programmazione.
Come si potrebbe procedere?
Grazie ancora e buona giornata
di Vecchio Frac data: 04/03/2015 10:06:24
Vedi le modifiche, ora cella per cella in colonna C ti scrive la sequenza richiesta.
Avevo capito che ti bastava la sequenza in un'unica cella.
Option Explicit
Sub find_sequences()
Dim regex As Object, item As Object, items As Object
Dim my_range As Range, compact_range As Variant, j As Long
Set my_range = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
compact_range = Join(WorksheetFunction.Transpose(my_range), "")
Range("C:C").ClearContents
Set regex = CreateObject("VBScript.Regexp")
With regex
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = "0+|1+"
End With
j = Range("C" & Rows.Count).End(xlUp).Row '<<< imposto un contatore di riga
If regex.Test(compact_range) Then
For Each item In regex.Execute(compact_range)
Cells(j, "C") = Cells(j, "C") & " " & Len(item) '<<< celle in sequenza di colonna C
j = j + 1 '<<< aumento il contatore alla prossima riga libera
Next
End If
Set regex = Nothing
End Sub |
di chris (utente non iscritto) data: 04/03/2015 11:43:11
Grazie mille, Vecchio Frac, per l'aiuto
Buona continuazione e cordiali saluti!
di Vecchio Frac data: 04/03/2015 13:11:00
Se pensi che la discussione è chiusa positivamente, ti invito a segnare come risolta la discussione.
Grazie.
di chris (utente non iscritto) data: 05/03/2015 08:19:48
Certo, grazie. Mi sembrava di aver spuntato già ieri
di Vecchio Frac data: 05/03/2015 10:41:53
cit. "Se pensi che la discussione è chiusa"
---> Mamma mia che brutta cosa. E nessuno me lo fa notare? :(
---> "Se pensi che la discussione SIA chiusa"
OT
di Mauro data: 05/03/2015 14:01:53
Non ti preoccupare è solo un po' di "congiuntivite".
Vuoi Approfondire?