Excel: una macro da raggruppare per colonna e valori somma

Il software Microsoft Office comprende Microsoft Excel, un'applicazione di fogli di calcolo con tabelle grafiche, calcoli, un linguaggio di programmazione macro, chiamato VBA (Visual Basic for Applications) e tabelle pivot. Una tabella pivot viene utilizzata per elencare i dati; riconosce e riepiloga i dati per ottenere risultati specifici. Una macro rappresenta un elenco di comandi o azioni per rendere più veloci i dati lunghi o le attività ripetitive in Excel Office Software; questo può essere eseguito ogni volta che è necessario per eseguire l'attività. Prende i valori, esegue l'operazione richiesta e restituisce il valore di conseguenza. Se vuoi scrivere una macro per raggruppare per colonna e valore somma, inizia semplicemente la macro usando i comandi rilevanti.

Problema

Devo scrivere una macro per il seguente esempio:

 Elemento Qtà Lunghezza A 1 100 A 1 100 B 2 200 B 1 100 B 5 100 C 4 200 C 2 100 C 1 200 C 3 100 

Fondamentalmente voglio raggruppare per Colonna A (cioè Elemento) e Colonna C (cioè lunghezza) e voglio anche aggiungere il totale di ogni variazione in lunghezza, per un articolo. In questo caso, il risultato sul nuovo foglio sarebbe il seguente:

 Elemento Qtà Lunghezza A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Spero che abbia senso.

Qualcuno può aiutarmi a scrivere una macro Excel per questo per favore?

Soluzione

Prova questo

Assunzione:

  • 1. Quando si avvia una macro, il foglio da cui i dati devono essere copiati è il foglio attivo
  • 2. Una cella vuota nella colonna A indica la fine dei dati
  • 3. Si desidera incollare sul foglio 3 (correggere in macro se non è il caso)

 Sub consolidateData () Dim lRow As Long Dim ItemRow1, ItemRow2 As String Dim lengthRow1, lengthRow2 As String Columns ("A: C") .Seleziona Selection.Copy Sheets ("Sheet3"). Seleziona Range ("A1"). Seleziona ActiveSheet .Paste Cells.Seleziona Selection.Sort _ Key1: = Range ("A2"), Order1: = xlAscending, _ Key2: = Range ("C2"), Order2: = xlDescending, _ Header: = xlSi, OrderCustom: = 1, _ MatchCase: = False, Orientamento: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 Do While (Celle (lRow, 1) "") ItemRow1 = Celle (lRow, "A") ItemRow2 = Celle (lRow + 1, "A") lengthRow1 = Celle (lRow, "C") lengthRow2 = Celle (lRow + 1, "C") If ((ItemRow1 = ItemRow2) And (lengthRow1 = lengthRow2)) Quindi Celle (lRow, "B") = Celle (lRow, "B") + Celle (lRow + 1, "B") Rows (lRow + 1) .Elimina Else lRow = lRow + 1 End If Loop End Sub 

Nota

Grazie a rizvisa1 per questo suggerimento sul forum.

Articolo Precedente Articolo Successivo

I Migliori Consigli