Gå til innhold

Excel - søke og hente ut verdier fra flere regneark


Anbefalte innlegg

Hei!
 
Trenger hjelp med en formel, dette er utgangspunktet mitt:
1 bok med 3 ark, det jeg ønsker er:
 
1. Ark 1 - kolonne A - rad 1 skal hente Ark2 kolonne B rad 1 (Dette er ok)
 
2. Ark1 - Kolonne A - rad 2 skal sammenligne Ark 1 - Kolonne A - rad 1 med Ark2 og Ark3 kolonne B og returnere den neste ukjente verdien. Altså finner den verdien fra Ark1 i Ark3 skal den returnere neste ukjente verdi fra enten Ark2 eller Ark3. 
 
3.  Ark1 - Kolonne A - rad 3 skal sammenligne Ark 1 - Kolonne A - rad 2 med Ark2 og Ark3 kolonne B og returnere den neste ukjente verdien. Altså finner den verdien fra Ark 1 i Ark2 eller Ark3 skal den returnere neste ukjente verdi fra enten Ark2 eller Ark3. 
 
4. Slik skal det fortsette til den har tatt alle verdiene som står i Ark2 og Ark3 kolonne B.
 
Her ligger en start på Boken:

https://www.dropbox.com/s/djswoqd3itn6c5i/test.zip?dl=0

 
Håper noen skjønner hva jeg er ute etter! På forhånd takk!
Mvh
Daniel

Endret av Daniel206RC
Lenke til kommentar
Videoannonse
Annonse

For meg hadde det hjulpet veldig om du sier noe om "Varför du gör på detta viset"  :dribble:

Enkel løsning på kompliserte oppgaver er ønskelig - og komplisert

 

Vennlig hilsen Ketil

Hehe!

Jeg har en bok med flere ark med beregninger av pris for en vare og en tjeneste.

Jeg skal i et nytt ark hente ut alle varenummerene som er brukt i de arkene men skal bare ha nummeret 1 gang selv om de går igjen i flere av arkene.

jeg har allerede laget formelen for å hente ut antallet av varene fra alle arkene

(=HVISFEIL(INDEKS('Ark2'!C:C;SAMMENLIGNE(A:A;'Ark2'!B:B;));0))

men sliter med å hente ut varenummeret bare en gang til kolonne A

Endret av Daniel206RC
Lenke til kommentar

Ok, så oppgaven er å telle antall unike artikkelnummer i arkene?

Nei, jeg skal hente ut varenummeret fra ark2 og 3, finner den varen i ark 2 og 3 skal den kun skrive varenummeret 1 gang i ark1 kolonne A - rad 1 og deretter skal kolonne A - rad 2 gjøre samme jobben, dette skal fortsette helt til raden ikke finner flere varenummere, altså blankt felt.(dette får jeg ikke til), videre gjør ark1 opptellingen av de varene som er funnet(Denne delen er ok).

 

Dette er hva jeg bruker boken til:

Jeg regner en pris på en jobb ved å legge inn en "gruppepris" for montering, deretter legger jeg inn et varenummer og antallet av varen, dette gjentar jeg til hele jobben med alle varene som skal brukes er med, deretter summerer jeg alt som har med pris å får en totalpris for å gjøre denne jobben.

Antallet varer, gruppepris og totalpris har jeg kontroll på, men jeg ønsker da at Ark1 skal finne alle varenummerene jeg har lagt til i Kolonne B i alle arkene og skrive disse kun 1gang, dette fordi jeg summerer disse ved å hente varenummeret fra kolonne A i Ark1. Dette vil jo ikke fungere før det står et varenummer i Ark1 Kolonne A, så jeg må nå skrive disse manuelt inn for at summeringen skal skje, varenummeret har jeg jo allerede skrevet inn i Ark 2 kolonne B, kanskje har jeg skrevet det i Ark3 kolonne B også, så jeg vil slippe å skrive inn varenummeret enda en gang i Ark1.

 

Ser dette er vanskelig å lese, men håper du ser hva jeg er ute etter :)

 

Lenke til kommentar

For å få til dette kan du bruke makroen under

Du kan laste ned eksempelfilen din her

http://www.excelguru.no/download/1646/

Makroen tøffer gjennom alle regnearkene bortsett fra Ark1 og plasserer alle unike artikler i A-kolonnen. Bytter du navn på Ark1, må du endre linjen Set Ark = Sheets("Ark1")

 
Vennlig hilsen Ketil
 
Sub Transfer()
  Dim s As Double
  Dim a As Integer
  Dim Ark As Worksheet
  Dim R As Range
  
  Set Ark = Sheets("Ark1")
  Set R = Ark.Range("A:A")
  
  For i = 1 To ActiveWorkbook.Worksheets.Count
   If ActiveWorkbook.Worksheets(i).Name <> Ark.Name Then
    With ActiveWorkbook.Worksheets(i)
     x = 1: While .Cells(x, 2) <> ""
      s = .Cells(x, 2)
      a = 0
      On Error Resume Next
      a = Application.WorksheetFunction.Match(s, R, 0)
       If a = 0 Then
       l = l + 1
       Ark.Cells(l, 1) = s
      End If
     x = x + 1: Wend
    End With
   End If
  Next i
End Sub
  • Liker 1
Lenke til kommentar

 

For å få til dette kan du bruke makroen under

Du kan laste ned eksempelfilen din her

http://www.excelguru.no/download/1646/

Makroen tøffer gjennom alle regnearkene bortsett fra Ark1 og plasserer alle unike artikler i A-kolonnen. Bytter du navn på Ark1, må du endre linjen Set Ark = Sheets("Ark1")

 
Vennlig hilsen Ketil
 
Sub Transfer()
  Dim s As Double
  Dim a As Integer
  Dim Ark As Worksheet
  Dim R As Range
  
  Set Ark = Sheets("Ark1")
  Set R = Ark.Range("A:A")
  
  For i = 1 To ActiveWorkbook.Worksheets.Count
   If ActiveWorkbook.Worksheets(i).Name <> Ark.Name Then
    With ActiveWorkbook.Worksheets(i)
     x = 1: While .Cells(x, 2) <> ""
      s = .Cells(x, 2)
      a = 0
      On Error Resume Next
      a = Application.WorksheetFunction.Match(s, R, 0)
       If a = 0 Then
       l = l + 1
       Ark.Cells(l, 1) = s
      End If
     x = x + 1: Wend
    End With
   End If
  Next i
End Sub

 

Tusen hjertelig takk, funker utmerket i test dokumentet mitt, men når jeg bruker den i selve hovedboken min får jeg feilen:

Run time error '13' Type mismatch

Dette er linjen som blir gul ( s = .Cells(x, 2), har endre Set 

jeg er ikke så kjent med makroer så sliter med feilsøking og ser ikke helt hva linjen gjør, kan du forklare kjapt?

Lenke til kommentar

 

 

For å få til dette kan du bruke makroen under

Du kan laste ned eksempelfilen din her

http://www.excelguru.no/download/1646/

Makroen tøffer gjennom alle regnearkene bortsett fra Ark1 og plasserer alle unike artikler i A-kolonnen. Bytter du navn på Ark1, må du endre linjen Set Ark = Sheets("Ark1")

 
Vennlig hilsen Ketil
 
Sub Transfer()
  Dim s As Double
  Dim a As Integer
  Dim Ark As Worksheet
  Dim R As Range
  
  Set Ark = Sheets("Ark1")
  Set R = Ark.Range("A:A")
  
  For i = 1 To ActiveWorkbook.Worksheets.Count
   If ActiveWorkbook.Worksheets(i).Name <> Ark.Name Then
    With ActiveWorkbook.Worksheets(i)
     x = 1: While .Cells(x, 2) <> ""
      s = .Cells(x, 2)
      a = 0
      On Error Resume Next
      a = Application.WorksheetFunction.Match(s, R, 0)
       If a = 0 Then
       l = l + 1
       Ark.Cells(l, 1) = s
      End If
     x = x + 1: Wend
    End With
   End If
  Next i
End Sub

 

Tusen hjertelig takk, funker utmerket i test dokumentet mitt, men når jeg bruker den i selve hovedboken min får jeg feilen:

Run time error '13' Type mismatch

Dette er linjen som blir gul ( s = .Cells(x, 2), har endre Set 

jeg er ikke så kjent med makroer så sliter med feilsøking og ser ikke helt hva linjen gjør, kan du forklare kjapt?

 

Kan dette være fordi jeg har tekst i B1 i alle arkene?? Tallene start først i B7

Endret av Daniel206RC
Lenke til kommentar

Det er riktig.

 

Hvis du endrer linjen

x = 1: While .Cells(x, 2) <> ""

til

x = 7: While .Cells(x, 2) <> ""

 

Så bør det funke

Det funket!

Ssiste problem er at den skal starte å skrive i A3 i Ark1 ikke A1 som skjer nå, jeg trodde at det bare var å endre  Set R = Ark.Range("A:A") til  Set R = Ark.Range("A3:A50") men dette hjalp ikke.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...