Excel - O macrocomandă pentru a grupa după coloane și valori sumă
Software-ul Microsoft Office cuprinde Microsoft Excel, care este o aplicație de calcul tabelar cu tabele grafice, calcule, un limbaj de programare macro, numit VBA (Basic Basics for Applications) și tabele pivot. Un tabel pivot este utilizat pentru a lista datele; recunoaște și rezumă aceste date pentru a obține rezultate specificate. O macrocomandă reprezintă o listă de comenzi sau acțiuni pentru a face mai repede mai multe date sau sarcini repetitive în Excel Office Software; acest lucru poate fi rulat ori de câte ori trebuie să efectuați sarcina. Evaluează valorile, efectuează operația necesară și returnează valoarea în consecință. Dacă doriți să scrieți o macrocomanda pentru a grupa după coloană și valoarea sumă, atunci trebuie doar să porniți macro-ul folosind comenzile relevante.
Problema
Trebuie să scriu o macrocomandă pentru următorul exemplu:
Poziție Cantitate Lungime 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
În principiu, vreau să grupez prin Coloana A (adică Postul) și Coloana C (adică lungimea) și doriți, de asemenea, să adăugați numărul total al fiecărei modificări în lungime, pentru un element. În acest caz, rezultatul pe noua foaie va fi următorul:
Poziție Cantitate Lungime A 2 100 B 2 200 B 6 100 C 5 200 C 5 100
Sper că acest lucru are sens.
Poate cineva să mă ajute să scriu o macrocomandă Excel pentru asta?
Soluţie
Incearca asta
Presupunere:
- 1. Când porniți o macrocomandă, foaia activă este foaia de unde vor fi copiate datele
- 2. O celulă goală din coloana A indică sfârșitul datelor
- 3. Doriți să lipiți pe foaia 3 (corect în macro, dacă nu este cazul)
("A: C") Selectați Selection.Copy Sheets ("Sheet3") Selectați Range ("A1") Selectați ActiveSheet .Paste Cells.Select Selection.Sort _ Key1: = Interval ("A2"), Order1: = xlAscending, _ Key2: = Interval ("C2"), Order2: = xlDescending, Header: = xlYes, OrderCustom = = 1, _ MatchCase: = False, Orientation: = xlTopToBottom, _DataOption1: = xlSortNormal lRow = 2 În timp ce (Celule (lRow, 1) "") ItemRow1 = Celule (lRow, "A") ItemRow2 = "A") lengthRow1 = Celule (lRow, "C") lengthRow2 = Celule (lRow + 1, "C") = Celule (lRow, "B") + Celule (lRow + 1, "B") Rows (lRow + 1) .Delete lRow = lRow +
Notă
Datorită lui rizvisa1 pentru acest sfat pe forum.