Avatar billede cubie Novice
14. juni 2013 - 22:49 Der er 5 kommentarer og
1 løsning

Relation mellem varer og kategorier

Hej...
Okay, jeg har svært ved hvor jeg skal placere mit spørgsmål her på siden, men nu prøver jeg i denne kategori.

Jeg er ved at flytte en webshop, hvor jeg har fået 3 eksporterede excel filer ud, som skal importeres i et nyt sytem. 1 fil med varer, 1 fil med varekategorier og 1 fil med relationer mellem varer og katergorier.

Jeg har et excel ark, som viser filen med relationer mellem varer og kategorier:

Kolonne 1: Varenummer (itemGuid)
Kolonne 2: Varekategori (itemGroupGuid)

Excel arket viser, at et varenummer kan optråde x-antal gange i kolonne 1 alt efter hvor mange varekategorier en vare ligger i. Giver det mening?
Okay; én vare kan ligge i  flere kategorier. Derfor kan varenummer optræde flere gange i kolonne 1, alt efter hvor mange kategorier den ligger i.

Det jeg har brug for er, at et varenummer kun optager én linie. Varens kategorier skal altså samles i én celle med et komma mellem hver kategori.

Så altså nu ser filen således ud:

Vare A - Kategori E
Vare A - Kategori F
Vare A - Kategori T

Jeg vil gerne, at den kommer til at se således ud:

Vare A - Kategori E, Kategori F, Kategori T

Hvordan kan jeg gøre det forholdsvis automatisk med følgende fil:
http://firewerk.dk/projekt/varegruppe.zip

Tak skal I have : )
Avatar billede supertekst Ekspert
14. juni 2013 - 23:47 #1
Med VBA kan det lade sig gøre.

Jeg er lige ved at tro at der ligge noget lignende i gl. Excel spørgsmål.
Avatar billede jens48 Ekspert
14. juni 2013 - 23:48 #2
Nedenfor finder du 2 forskellige makroer, der kan bruges, hvis varenr. og kategori skal vises i samme ark som du har relationerne i.
Makro 1, hvis der kun skal bruges en linie. Varenummer sættes ind i celle E4 og kategorierne vises i celle F4 efter kørsel af makroen:

Sub Kategori()
Dim LastRow As Long
Dim x As Long
Dim y As String
Dim z As Long
y = "Kategori: "
LastRow = Range("A65536").End(xlUp).Row
For x = 2 To LastRow
If Cells(4, 5) = Cells(x, 1) Then
y = y & Cells(x, 2) & ", "
End If
Next
z = Len(y)
y = Left(y, z - 2)
Cells(4, 6) = y
End Sub

Makro 2, hvis der skal være flere linier med varenumre. Varenumrene sættes ind i kolonne E og kategorierne vises automatisk i kolonne F:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:E")) Is Nothing Then
Dim LastRow As Long
Dim x As Long
Dim y As String
Dim z As Long
y = "Kategori: "
LastRow = Range("A65536").End(xlUp).Row
For x = 2 To LastRow
If Target = Cells(x, 1) Then
y = y & Cells(x, 2) & ", "
End If
Next
z = Len(y)
y = Left(y, z - 2)
Target.Offset(0, 1) = y
End If
End Sub
Avatar billede cubie Novice
15. juni 2013 - 08:26 #3
Hej Jens
Det tyder jo rigtig godt. Men jeg er ikke skarp i makroer. Hvordan gøres det? Kan du evt. køre det på den fil jeg har vedhæftet?
Avatar billede jens48 Ekspert
15. juni 2013 - 17:56 #4
Hej Cubie,
Jeg har uploaded en fil http://gupl.dk/697769/, hvor der på den ene side bruges første makro og på den anden side den anden. Håber det kan bruges.
Mvh.
Jens
Avatar billede cubie Novice
15. juni 2013 - 18:03 #5
Hej Jens
Tak for det. Det kan sagtens få mig videre. Smid et svar : )

Og igen, tak for din tid.
Avatar billede jens48 Ekspert
15. juni 2013 - 18:16 #6
Du får et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester