Hur gör jag dela en rad i flera rader med Excel Super User

Jag har en produktdatabas i Excel med flera hundra anteckningar, var och en har från 1 till 3 "tiers" prissättning: Standard, Deluxe och Premium. Varje skikt har sin egen SKU (A, B eller C sattes på till slutet av basen SKU) och pris. Min data så här:

Hur skulle jag gå om att få data att se ut så här:

Om det hjälper, jag kommer att importera dessa produkter till någon Magento installation.

Tack på förhand.

Dessa uppgifter är oftast snabbare med VBA. I själva verket tog det mig

10 minuter att ställa upp.
Jag antar dina data är i kolumn A till kolumn H.

Gå till Excel »Developer» Visual Basic »På den vänstra panelen öppna Blad1 (eller) arket där din data finns» Sätt in koden på det högra fönstret »Kör koden


VBA-kod

Förklaring

Det var min avsikt att hålla koden så kort som möjligt för att förklara det bättre. I grund och botten använder vi två slingor. Den yttre slingan (i) är för raderna och den inre slingan (j) för priskolumner.

Vi använder tungt celler (ROWNUMBER, columnNumber) för att läsa / skriva celler.

Linje 2 | Starta en slinga från rad 2 till sista raden. Vi iterera igenom varje använt rad

Linje 3 | Starta en andra slinga från 0 till 2 (som är faktiskt 3 slingor, en för varje priser kolumn)

Linje 4 | Vi använder denna inre slinga för att kontrollera om det finns värden i vårt nuvarande rad och kolumn Pris A, sedan Pris B och i den sista slingan Pris C. Om vi ​​hittar ett värde i en kurskolumnen, vi går på och kopiera celler. Om ingen Priset är insatt, gör vi ingenting och gå vidare till nästa Pris kolumnen

Linje 5 | Räkna upp en räknare för att veta hur många rader som vi redan kopierats,
så vi vet efter vad raden vi kan kopiera vårt nuvarande rad

Linje 6 | Kopiera namnet kolumnen

Linje 7 | Kopiera kolumnen Beskrivning

Linje 8 | Kopiera Pris A, B eller C kolumn beroende på vilken inre slingan vi för närvarande

Linje 9 | Kopiera SKU A, B eller C kolumn beroende på vilken inre slingan vi för närvarande

resultat skärmdump

Här är en kalkylbladsfunktionen lösning. Formlerna är lite tätt, så varnas, men detta kommer att ge vad du vill.

  1. I den första raden i den nya tabellen, under Namn. anger en direkt hänvisning till den första namn i dina data. I ditt exempel, skulle du skriva = A2 där A2 är det första namnet som anges i dina data. I exemplet skärmdump jag har nedan, går denna formel i A8. Alla följande formler följer layouten används på skärmbilden. Du kommer naturligtvis att behöva uppdatera alla olika referenser som matchar din ark (s).
  2. I cellen under detta ange följande formel: Detta kontrollerar i princip hur många rader det bör vara namnet som anges ovan (i A9), och om antalet rader redan i den nya tabellen matchar detta, då den rör sig vidare till nästa namn. Om inte, en annan rad för namnet ovan kommer att läggas.
    Fyll denna formel ner så långt som du behöver (tills den returnerar 0 i stället för ett namn).
  3. I den första raden enligt beskrivning ange följande formel och fyll ned.
  4. I den första raden i SKU. klistra in följande formel i formelfältet och tryck Ctrl + Skift + Enter. Detta är en matrisformel; om du har angett korrekt formel visas i formelfältet inneslutna i klammerparenteser. Fyll denna formel ned tabellen (bör varje instans också visas i klammer parentes).
  5. Även i den första raden i pris. klistra in följande formel i formelfältet och skriv in den som en matrisformel (genom att trycka Ctrl + Shift + Enter). Fyll ner, och detta bör komplettera ditt bord.

svarat 17 augusti ’13 vid 22:09

Imponerande formler! Mellan detta och VBA svar, jag satt för det mesta. Tack! – GreysonD 17 augusti ’13 vid 22:18

Källa: superuser.com

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

tre + ett =