PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAValidering och kopieringValidering och kopiering
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2015-11-02 16:45
 

 Hej (igen)

 

Jag skulle behöva hjälp med lite VBA kod.

Jag får in massa arbetsböcker med massa data i men dem ligger dumt till, då jag måste snygga till filerna för att sen kunna importera dem i vårt affärssystem. Nu vill jag med hjälp av VBA göra upp snyggningen automatiskt.

Som ni ser i bilden är det 3 orders som kommit.

Det jag behöver är en kod som går efter Ordernr, i Kolumn H och känner av när det blir nytt ordernr. Flytta data beroende på Ordernr som värde. Validerar mot ordernr helt enkelt. 

 

Kolla kolumn H2 (där ordernr ligger)

Ta värde ”order 1”

Kolla om det finns ett värde i ”D2”.

Om JA

Kopiera värde Från D2 (serienummer)  till ”blad 2, rad2, Cell A2”

Kopiera värde från B2 ”blad 2, rad2, Cell B3”

 Sen kolla resten av raderna som tillhör order 1 (H2:H5) och upprepa

Loopa och leta nästa order.

 

Ta värde ”order 2”

Kolla om det finns ett värde i Kolumn D6.

Om NEJ

Kolla D7,

 Om Nej

Kolla D8,

Om JA

Kopiera värde till ”blad 2, rad3, Cell A2”

Kopiera värde från B2 ”blad 2, rad2, Cell B3”

 

Loopa och leta nästa order.

 

Den ska validera genom hela ordernumret innan den går till nästa order, finns det inget värde alls att hämta så går den vidare. 

 

 

Utleveransdatum Beskrivning Antal Serienr Företag Postnr Ort Ordernr
20151030 Dator 1,00 E205R360454 Kalle Anka 172 21 Sundbyberg Ordernr 1
20151030 Mus 1,00   Kalle Anka 172 21 Sundbyberg Ordernr 1
20151030 Skåp 1,00   Kalle Anka 172 21 Sundbyberg Ordernr 1
20151030 Tangentbord 1,00   Kalle Anka 172 21 Sundbyberg Ordernr 1
20151030 Toner 1,00   David Nya 172 21 Sundbyberg Ordernr 2
20151030 Toner 1,00   David Nya 172 21 Sundbyberg Ordernr 2
20151030 Skrivare 1,00 38000000001 David Nya 172 21 Sundbyberg Ordernr 2
20151030 Toner 1,00   David Nya 172 21 Sundbyberg Ordernr 2
20151030 Block 1,00   David Nya 172 21 Sundbyberg Ordernr 2
20151030 Registrering Serviceavtal 1,00   David Nya 172 21 Sundbyberg Ordernr 2
20151030 Toner 1,00   David Nya 172 21 Sundbyberg Ordernr 3
20151030 Toner 1,00   David Nya 172 21 Sundbyberg Ordernr 3
20151030 Skrivare 1,00   David Nya 172 21 Sundbyberg Ordernr 3
20151030 Snus 1,00   David Nya 172 21 Sundbyberg Ordernr 3
20151030 Block 1,00   David Nya 172 21 Sundbyberg Ordernr 3
20151030 Registrering Serviceavtal 1,00   David Nya 172 21 Sundbyberg Ordernr 3

Nytt inlägg
 2015-11-16 13:31
 

 Hej Igen!

 

Jag gjorde om Macrot lite, så att i Sheet "Mall" så lägger jag in alla unika ordernr i kolumn A. Sedan så hämtar macrot från Sheet "Macro" och kopierar över det. 

 

Den matchar bra men har ett problem att den hämtar bara om serienummer är på sista raden av det ordernumret. Jag vill att den ska kolla alla rader med samma ordernr / "KOnr" och bara hämta dem med värde i sig. 

 

Någon som vet en bra lösning? 

 

 

Sub GetKonr()

 

Dim lastRow1 As Long

Dim lastRow2 As Long

Dim KoMacro As String

 

    lastRow1 = Sheets("Macro").Range("R" & Rows.Count).End(xlUp).Row

    lastRow2 = Sheets("Mall").Range("A" & Rows.Count).End(xlUp).Row

 

    For sRow = 2 To lastRow1

        KoMacro = Sheets("Macro").Cells(sRow, "R").Text

 

        For tRow = 2 To lastRow2

            If Sheets("Mall").Cells(tRow, "A") = KoMacro Then

                Sheets("Mall").Cells(tRow, "D") = Sheets("Macro").Cells(sRow, "F")

            End If

        Next tRow

    Next sRow

 

Dim match As Boolean

'now if no match was found, then put NO MATCH in cell

    For lRow = 2 To lastRow2

        match = False

        KoMacro = Sheets("Mall").Cells(lRow, "D").Text

 

        For sRow = 2 To lastRow1

            If Sheets("Mall").Cells(sRow, "D") = KoMacro Then

                match = True

            End If

        Next sRow

 

        If match = False Then

            Sheets("Mall").Cells(lRow, "D") = "NO MATCH"

        End If

    Next lRow

End Sub

 
Nytt inlägg
 2015-11-16 13:59
 
 Ändrad av DavidNya  på 2015-11-17 11:50:27

Eller om den kunde hämta första raden på istället för sista i Ordernumret i det macrot jag har nu. Det nedanstående gör så den kollar sista ifyllda cellen, har testat att ändra xlUp till xlDown men då krachar det :)

 

Jag vill kolla första raden och inte sista :) 

 

 

lastRow1 = Sheets("Macro").Range("R" & Rows.Count).End(xlUp).Row

 lastRow2 = Sheets("Mall").Range("A" & Rows.Count).End(xlUp).Row

 

 

 

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAValidering och kopieringValidering och kopiering

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter