Newsgroup: it.comp.lang.visual-basic
Titolo: manipolazione tabella in VBA-Excel: righe pari -> colonna

salve utenti tutti!
ho finito la fantasia e le capacità così vi chiedo una mano.
ho un listino prezzi che viene, per ragioni che non vi sto a spiegare,
fornito in questo formato
prodotoA
prezzoA
prodottoB
prezzoB
...
e lo vorrei trasformare in
prodotoA prezzoA
prodottoB prezzoB
...
come tutti i listino del mondo, con una colonna per i prodotti e una
per i prezzi.
ora però non so proprio come fare.
mi piacerebbe farlo in VBA sotto excel o nel linguaggio di OpenOffice,
a cui sto migrando, credo sia Phyton.
Cmq VBA va benissimo.
Solo che non ho la più pallida idea di come maneggiare questra
trasformazione, che direi delle righe pari in colonna, qualcuno ha
idee?
Grazie mille

 ha scritto nel messaggio
news:747019b7.04051...@posting.google.com...

Potresti fare in questo modo:
Private Sub CommandButton1_Click()
Dim nr As Long
Dim PrimaRiga As Long
Dim UltimaRiga As Long
Dim nrNew As Long
'questo esempio legge i dati dal foglio1 e li ricompone sul foglio2 nel
nuovo ordine
'imposta su PrimaRiga il numero della riga da dove iniziare a leggere
'imposta su UltimaRiga il numero della pen'ultima riga da leggere
'la colonna considerata è la 1 se diversa cambiare il valore
PrimaRiga = 1: UltimaRiga = 3
For nr = PrimaRiga To UltimaRiga Step 2
nrNew = nrNew + 1
Foglio2.Cells(nrNew, 1) = Foglio1.Cells(nr, 1)
Foglio2.Cells(nrNew, 2) = Foglio1.Cells(nr + 1, 1)
Next nr
Foglio2.Activate
End Sub
Buon Lavoro

 Cmq VBA va benissimo.
Fatta al volo, sicuramente e' ottimizzabile.
Sub Macro1()
    Dim intCont As Integer
    Dim intFinale As Integer
    intCont = 2
    While Len(Range("A" & intCont).Text) > 0
        Range("B" & intCont - 1).Value = Range("A" & intCont).Text
        intCont = intCont + 2
    Wend
    intFinale = intCont
    intCont = 2
    While intCont < intFinale
        Range(intCont & ":" & intCont).Select
        Selection.Delete Shift:=xlUp
        intCont = intCont + 1
    Wend
End Sub

        Range(intCont & ":" & intCont).Select
non ho capito, ne trovato nell'help, quale sintassi si usi qui, e neanche il significato č
chiaro, credo solo di capire che stai slelzionando quello che al passo dopo viene
eliminato, cioč le righe vuote lascite in mezzo alle righe significative.
Riferimento Significato 
Range("A1") Cella A1 
Range("A1:B5") Celle comprese tra A1 e B5 
Range("C5:D9,G9:H16") Selezione multipla 
Range("A:A") Colonna A 
Range("1:1") Riga 1 
Range("A:C") Colonne comprese tra A e C 
Range("1:5") Righe comprese tra 1 e 5 
Range("1:1,3:3,8:8") Righe 1, 3 e 8 
Range("A:A,C:C,F:F") Colonne A, C e F 
tu invece usi solo virgolette interne e con & e un numero, niente lettera, che significa?
grazie mille
PS
ora proverň a tradurlo in OpenOffice, che ha anche la splendida funzione di potere
annullare con "annulla" del menu modifica, le cose fatte tramite macro. mica male ...
-------------------------------------------------------------
tutto ciň che ho scritto č sempre In My Humble Opinion (IMHO)
probabilmente l'ho scritto di fretta, quindi scusate se sono stato sbrigativo.


-------------------------------------------------------------
tutto ciò che ho scritto è sempre In My Humble Opinion (IMHO)


 tu invece usi solo virgolette interne e con & e un numero, niente lettera,
che significa?
Il passaggio da VC a VB e' sempre traumatico con le stringhe :-)
L'istruzione Range(intCont & ":" & intCont).Select...in parole povere, il &
e' il concatenamento tra stringhe, ed in VB il casting e' moooolto
implicito.
intCont & ":" & intCont
Significa "prendi il valore della variabile intCont, trasformalo in stringa,
concatenaci il carattere ':' e poi concatenaci il valore della variabile
intCont trasformato in stringa.
Risultato, se intCont fosse l'intero 1, la stringa "1:1".
E' l'unica cosa per cui non rimpiango il C
:-D

:-D
Tutto chiaro. Grazie mille 
