estrazione dati da matrice
Hai un problema con Excel? 
estrazione dati da matrice.
di Pietro (utente non iscritto) data: 12/02/2013 20:36:26
Ciao a tutti,
vorrei sapere se qualcuno fosse così gentile da aiutarmi sul seguente quesito.
Dalla tabella A di Excel che riporto sotto, vorrei arrivare ad avere la tabella B che riporto sempre sotto.
Preciso che la tabella A contiene in realtà circa 1000 righe (coppie di valori) e 130 colonne (un numero).
Ogni cella della matrice può assumere 3 valori: Vuota, 1, S
La tabella B deve essere così creata partendo dalla tabella A:
quando la cella assume valore 1 o S (indifferentemente), deve essere riportata la coppia di valori (es. A,X) relativa alla riga in cui si trovano l'1 o la S e, a fianco, il numero inserito nell'intestazione della colonna in cui si trovano l'1 o la S (es. 3).
Qualcuno sa come aiutarmi?
Ringrazio anticipatamente chiunque volesse darmi una mano,
Pietro
TABELLA A
40 41 42 43
A X
B Y S 1
C W
D Z S
TABELLA B
Col1 Col2 Col3
B Y 41
B Y 42
D Z 42 |
di mabolsie (utente non iscritto) data: 12/02/2013 21:38:50
Ciao Pietro, non è molto semplice, infatti dovresti crearti una macro con dei cicli For per passare tutte le celle nella regione dei dati della tabella A e copiare le celle con s o 1 nella tabella B.
Con il codice vba è un bel lavoro !!!
Hai provato con i filtri di Excel ?
Ti intedi di codice vba ??
Spero di esserti stato utile
Ciao Max
di Pietro (utente non iscritto) data: 13/02/2013 09:36:29
Non conosco il linguaggio VBA. Ho fatto alcune basi di programmazione a scuola (Pascal) quindi so cosa è un ciclo for ma non so metterlo in VBA. Sai indicarmi un sito dove è spiegato come implementare un ciclo del genere?
di HarryBosch data: 13/02/2013 15:36:13
Ciao Pietro,
sei già sul sito giusto ^_^
Se guardi sotto il Forum troverai le voci "Corso Base Excel VBA, Approfondimenti, Tutorial" ecc.. dove troverai dell'ottimo materiale, sicuramente anche sui cicli, parte essenziale di ogni linguaggio di programmazione.
Ad ogni modo testa anche una routine che ti propongo qua sotto; le condizioni che richiede sono:
- che le due stringhe da riportare sulla nuova tabella si trovino nella tabella originale lungo la colonna A e B
- la nuova tabella viene creata nel Foglio2, eventualmente da modificare nel codice
Sub nuova_tabella()
Dim r As Integer, c As Integer
Dim uc As Integer, riga As Integer
uc = Cells.Find(What:="*", After:=[A1], searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column
With Sheets("Foglio2")
For r = 1 To [counta(a:a)]
For c = 3 To uc
If Cells(r, c) = "S" Or Cells(r, c) = 1 Then
riga = riga + 1
.Cells(riga, 1) = Cells(r, 1)
.Cells(riga, 2) = Cells(r, 2)
.Cells(riga, 3) = Cells(r, c).Column
End If
Next
Next
End With
End Sub
|
Vuoi Approfondire?