+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Macro Excel. Moltiplicazione Records rispetto ad un valore

  1. #1
    cicco non è in linea Novello
    Ciao a tutti,

    sono appena arrivato nel forum.

    Conosco molto poco il linguaggio di programmazione e solitamente copio delle macro e cerco di modificarle a mano...

    Al momento non trovo dei file da utilizzare che si avvicinano a quello che vorrei fare... e quindi non posso copiare

    In particolare io ho un file .csv con 14000 record (righe). Vorrei sapere se è possibile creare una macro che automaticamente rispetto a questi dati crei un nuovo sheet con in copia i record presenti nel file "Master" e moltiplichi la numerosità in base ad un valore presente all'interno di una cella presente in ogni record.

    Mi spiego con un esempio:

    Sheet A "Originale":
    1) ... / DATO / DATO / DATO / 1 / DATO / DATO / ...
    2) ... / DATO2 / DATO2 / DATO2 / 2 / DATO / DATO / ...
    3) ... / DATO3 / DATO3 / DATO3 / 4 / DATO / DATO / ...

    Sheet B "Creato dalla Macro":
    1) ... / DATO / DATO / DATO / 1 / DATO / DATO / ...
    2) ... / DATO2 / DATO2 / DATO2 / 1 / DATO / DATO / ...
    3) ... / DATO2 / DATO2 / DATO2 / 1 / DATO / DATO / ...
    4) ... / DATO3 / DATO3 / DATO3 / 1 / DATO / DATO / ...
    5) ... / DATO3 / DATO3 / DATO3 / 1 / DATO / DATO / ...
    6) ... / DATO3 / DATO3 / DATO3 / 1 / DATO / DATO / ...
    7) ... / DATO3 / DATO3 / DATO3 / 1 / DATO / DATO / ...

    Vi ringrazio in anticipo
    Saluti

  2. #2
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao e benvenuto nel forum... leggi il regolamento se ancora non lo hai fatto.

    Venendo al tuo quesito, e sempre se ho ben capito la tua necessità, credo con con un ciclo For..Next riferito al valore della cella contenente "la numerosità", tu possa risolvere il problema.
    Ti poni sul primo record - ovvero sulla prima riga - del foglio originale e scrivi nel foglio di destinazione tante righe quante indicate dal "numeratore", qualcosa del tipo
    ......
    n. inizio riga Foglio B
    For x = 1 to valoreCellaNumeratore
    scrivi riga nel foglio B
    incrementa la riga dove scrivere nel Foglio B
    Next x
    ....
    
    il tutto all'interno di un altro ciclo di lettura del Foglio A, che può essere un altro For..Next, un Do Until....

    saluti

  3. #3
    cicco non è in linea Novello
    Grazie dodo47,

    diciamo che io sono molto niubbo, quindi mi mancano proprio le basi...

    Sto leggendo sul post in sticky qualche informazione basilare sul "dove partire".

    La logica di sistema da attuare l'ho capita, ora devo solo capire come si fa a scriverla

    Saluti

  4. #4
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    'mbè, diciamo che sono quattro righe di codice.

    Supponendo che devi copiare da foglio1 a foglio2 e che i dati di foglio1 inizino dalla prima riga:
    Sub CopiaRighe()
    r = 1 ' riga inizio foglio master
    r1 = 1 ' riga inizio foglio destinazione
    Do Until Cells(r, 1) = 0
        For x = 1 To Cells(r, 4)
            Rows(r).Copy Destination:=Sheets("Foglio2").Rows(r1)
            r1 = r1 + 1
        Next
        r = r + 1
    Loop
    MsgBox "Righe copiate"
    End Sub
    
    saluti

  5. #5
    cicco non è in linea Novello
    dodo47 ti ringrazio infinitamente.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. funzione SE+moltiplicazione excel
    Da friage nel forum Microsoft Excel
    Risposte: 1
    Ultimo Post: 31-05-2017, 17:42
  2. Excel Macro: concatenare se valore ripetuto
    Da buni75 nel forum Microsoft Excel
    Risposte: 5
    Ultimo Post: 20-05-2017, 13:55
  3. Excel Macro: concatenare se valore ripetuto
    Da buni75 nel forum Microsoft Word
    Risposte: 0
    Ultimo Post: 20-05-2017, 08:41
  4. excel: macro..copia ultimo valore inserito
    Da floriano1 nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 17-07-2007, 18:33
  5. Modifica records attraverso Macro
    Da pricious nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 29-04-2005, 10:11