11. august 2008 - 14:18
Der er
4 kommentarer
forbinde flere ark med hinanden ved hjælp af primærnøgle
Jeg kan trække data ud af database til excel. Jeg har et entydigt nummer i alle ark, men det er ikke alle, der står på alle ark. Altså:
Ark 1: Nr. 1 har kode iey
Nr. 2 har kode eyi
Ark 2: Nr. 1 har kode ipe
Nr. 2 har kode vni
Ark 3: Nr. 1 har kode 970
Nr. 2 er slet ikke med
Jeg vil gerne have samlet på en linie, at
Nr. 1 har kode iey - næste kollone: ipe - næste kollone: 970
Nr. 2 har kode eyi - næste kollone: vni - næste kollone: Blank
Hvordan gør jeg det?
12. august 2008 - 21:31
#1
Jeg forstår ikke helt...
Nr. 1 og Nr. 2 er det rækker nedad du mener?
Og skal det forstås således, at du ikke har nogen primærnøgle (fælles værdi) som er den samme på alle tre ark? Eller er det bare række nummeret du vil bruge som nøgle?
Hvis det nr. 1 og 2 er rækker og du bare vil have samlet kolonne A fra 3 ark til 3 kolonner på 1 ark, kan du gøre det på følgende måde:
Ark 4
Kolonne A: =Ark1!A1
Kolonne B: =Ark2!A1
Kolonne C: =Ark3!A1
Og så trække formlen ned...eller har jeg helt misforstået dig?
13. august 2008 - 10:06
#2
Jo jeg har en primærnøgle - ex:
Ark 1:
A1: Medlemsnummer - B1: Navn - C1: Kode
A2: 948309 - B2: Anders And - C2: y09
A3: 394697 - B3: Bent Bentsen - C3: ie4
Ark 2:
A1: Medlemsnummer - B1: Navn - C1: Kode
A2: 948309 - B2: Anders And - C2: we3
A3: 394697 - B3: Bent Bentsen - C3: oi8
Ark 3:
A1: Medlemsnummer - B1: Navn - C1: Kode
A2: 394697 - B2: Bent Bentsen - C2: rr1
Så vil jeg gerne samle Anders på en linie med kode 1 og kode 2 og Bent på næste linie med kode 1, kode 2 og kode 3
13. august 2008 - 19:08
#3
Har du mulighed for at hente en fuld liste med alle medlemsnummre og navne ind i et ark fra databasen?
For så kan følgende bruges:
Kode fra ark 1:
=HVIS(ER.FEJL(LOPSLAG(A2;Ark1!$A$2:$C$10;3;FALSK));"";LOPSLAG(A2;Ark1!$A$2:$C$10;3;FALSK))
Kode fra ark 2:
=HVIS(ER.FEJL(LOPSLAG(A2;Ark2!$A$2:$C$10;3;FALSK));"";LOPSLAG(A2;Ark2!$A$2:$C$10;3;FALSK))
Kode fra ark 3:
=HVIS(ER.FEJL(LOPSLAG(A2;Ark3!$A$2:$C$10;3;FALSK));"";LOPSLAG(A2;Ark3!$A$2:$C$10;3;FALSK))
Jeg har også leget lidt med noget VBA (makro), men ved ikke om du er interesseret i sådan en løsning?
13. august 2008 - 19:16
#4
Du får lige makro-løsningen også....
Den kan sikkert gøres smartere, men så god er jeg ikke....:-/
ark4
A1 = Medlemsnummer
B1 = Navn
C1 = Kode
D1 = Kode
E1 = Kode
Tryk Alt+F11 (Visual Basic)
Tryk Ctrl + R (Project Explorer)
Højreklik på ThisWorkbook
- Insert
- Module
Indsæt nedenstående kode:
Sub allenøgler()
Ark1.Activate
a1 = Range("A1").End(xlDown).Row
Range("A2:B" & a1).Copy
Ark4.Activate
If Range("A2").Value = "" Then
Range("A2").Activate
Else
Range("A2").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
ActiveSheet.Paste
Ark2.Activate
a2 = Range("A1").End(xlDown).Row
Range("A2:B" & a2).Copy
Ark4.Activate
If Range("A2").Value = "" Then
Range("A2").Activate
Else
Range("A2").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
ActiveSheet.Paste
Ark3.Activate
a3 = Range("A1").End(xlDown).Row
Range("A2:B" & a3).Copy
Ark4.Activate
If Range("A2").Value = "" Then
Range("A2").Activate
Else
Range("A2").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
ActiveSheet.Paste
Ark4.Activate
a4 = Range("A1").End(xlDown).Row
Columns("A:A").Select
Selection.Insert shift:=xlToRight
Range("A2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(R2C2:RC[1],RC[1])"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & a4), Type:=xlFillDefault
Range("A2:A" & a4).Select
Dim slut, i As Integer
slut = Range("A65000").End(xlUp).Row
For i = slut To 2 Step -1
Cells(i, 1).Select
If ActiveCell.Value <> 1 Then
ActiveCell.EntireRow.Delete shift:=xlUp
End If
Next
Columns("A:A").Select
Selection.Delete shift:=xlToLeft
Ark4.Activate
a5 = Range("A1").End(xlDown).Row
Range("C2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-2],Ark1!R2C1:R100C3,3,FALSE)),"""",VLOOKUP(RC[-2],Ark1!R2C1:R100C3,3,FALSE))"
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-3],Ark2!R2C1:R100C3,3,FALSE)),"""",VLOOKUP(RC[-3],Ark2!R2C1:R100C3,3,FALSE))"
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-4],Ark3!R2C1:R100C3,3,FALSE)),"""",VLOOKUP(RC[-4],Ark3!R2C1:R100C3,3,FALSE))"
Range("E3").Select
Range("C2:E2").Select
Selection.AutoFill Destination:=Range("C2:E" & a5), Type:=xlFillDefault
Range("C2:E" & a5).Select
Range("a1").Select
End Sub