Oprettet søn. d. 24. juli 2011 kl. 21:18:03

idani
idani (13.565 point. Point ude: 120)
www.ci-service.dk

Returner den sidste værdi - ved forspørgsel

Jeg har følgende opstilling

Unique Id    Start Date    Pension

Joachim        08-01-2007    HDO AA
        15-08-2007    HDO BB
        01-04-2008    HDO CC
        01-04-2009    HDO CC
        01-04-2010    HDO CC

Den indeholder ca 200 navne.

Hvert navn står kun anført i en celle (Kolonne A)og kun en gang, men kan have et antal variable rækker nedefter.

Min udfordring består i at jeg skal danne en liste som indeholder følgende
Kolonne A      Kolonne B        Kolonne C
Unique Id    Start Date    Pension
Navn            Den nyeste dato  Pensions ordningen som høre til datoen

Jeg kan ikke lige gennemskue hvordan jeg kan danne denne liste uden at lave alt for meget manuelt eller for mange ark.

Løsningen skal bruges til at afstemme pension for ialt 4000 medarbejderede mellem 2 systemer

Hilsen
Ida

Skrevet søn. d. 24. juli 2011 kl. 23:09:47| #1

supertekst
supertekst (139.454 point)
supertekst-it.dk
Vil den nyste dato altid være den sidste?

Kan udføres via VBA..

Skrevet man. d. 25. juli 2011 kl. 08:45:23| #2

idani
idani (13.565 point)
www.ci-service.dk
Hej Supertekst

Ja det vil den - jeg har ikke set andet - men den kan også stå i samme række som navnet, altså når der ikke er flere linier på folk

Hvordan ville sådan en VBA umiddelbart se ud - jeg kan godt selv rette den til, men jeg er ikke sikker på hvordan jeg starter det

/Ida

Skrevet man. d. 25. juli 2011 kl. 09:12:05| #3

supertekst
supertekst (139.454 point)
supertekst-it.dk
Hej Ida - jeg vender snarest tilbage med et forslag.

Skrevet man. d. 25. juli 2011 kl. 09:53:10| #4

supertekst
supertekst (139.454 point)
supertekst-it.dk
Koden indsættes "under" relevante ark:

Dim antalRæk As Long, ræk As Long, ræk2 As Long
Dim navn As String, dato As Date, ordning As String
Public Sub nyestePension()
Rem beregn antal rækker
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    ræk2 = 2
   
    Application.ScreenUpdating = False
   
    For ræk = 2 To antalRæk
        If ræk = 2 Then                    'opstart
            navn = Range("A2")
            dato = Range("B2")
            ordning = Range("C2")
        Else
            If Range("A" & ræk) <> "" Then  'brud - opbyg nyeste i kol E-G
                Range("E" & ræk2) = navn
                Range("F" & ræk2) = dato
                Range("G" & ræk2) = ordning
                ræk2 = ræk2 + 1
               
                navn = Range("A" & ræk)
            End If
            dato = Range("B" & ræk)
            ordning = Range("C" & ræk)
        End If
    Next ræk
Rem sidste brud
    Range("E" & ræk2) = navn
    Range("F" & ræk2) = dato
    Range("G" & ræk2) = ordning
   
    Application.ScreenUpdating = True
End Sub

Skrevet man. d. 25. juli 2011 kl. 14:02:20| #5

idani
idani (13.565 point)
www.ci-service.dk
Hej Supertekst den virkede super godt - lige indtil der kommer personer op med helt blanke linier i datoen (arket indeholder flere kolonner)
Så nu er det lykkedes mig at lave et ark hvor alle celler har en værdi.

Altså
NAVN          DATO          ORDNING
Joachim        08-01-2007    HDO AA
Joachim        15-08-2007    HDO BB
Joachim        01-04-2008    HDO CC
Joachim        01-04-2009    HDO CC
Joachim        01-04-2010    HDO CC

Så det jeg reelt har behov for er en VBA som siger.
If row "er størst" inden for det samme navn  - så skal den tage en kopi af hele rækken og ligge over i ark 2

er jeg helt sort ??

Den sidste dato vil altid ligge som den sidste på personen....
så måske noget i retning af

If Range ("A2") <> Range ("A") then
copy row
past special Sheet1

Men jeg kan ikke rigtig finde ud af at sætte det ind i en VBA
har været på kursus - men kan ikke helt starte de VBA'er op endnu ??

/Ida

Skrevet man. d. 25. juli 2011 kl. 14:16:26| #6

supertekst
supertekst (139.454 point)
supertekst-it.dk
Er det så ikke "farbart" at teste på når navnet skifter i kolonne A?

Skrevet man. d. 25. juli 2011 kl. 14:30:04| #7

idani
idani (13.565 point)
www.ci-service.dk
hmmm hvad har du så af gode ideer.
Det skal lige siges at det navn som står i kolonne A er unik - så det sammen navn vil kun optræde for en person.

/ida

Skrevet man. d. 25. juli 2011 kl. 14:40:36| #8

supertekst
supertekst (139.454 point)
supertekst-it.dk
Ok - arbejder p.t. med version 2...

Skrevet man. d. 25. juli 2011 kl. 14:46:39| #9

idani
idani (13.565 point)
www.ci-service.dk
du er simplethen en stjerne

TAK

/Ida

Skrevet man. d. 25. juli 2011 kl. 14:57:59| #10

supertekst
supertekst (139.454 point)
supertekst-it.dk
Rem version 2
Dim antalRæk As Long, ræk As Long, ræk2 As Long
Dim navn As String
Public Sub nyestePension()
Rem beregn antal rækker
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    ræk2 = 2
   
    Application.ScreenUpdating = False
   
    For ræk = 2 To antalRæk
        If ræk = 2 Then                        'opstart
            navn = Range("A2")
        Else
            If Range("A" & ræk) <> navn Then
                udførBrud
            End If
        End If
    Next ræk
Rem sidste brud
    udførBrud
    Application.ScreenUpdating = True
End Sub
Private Sub udførBrud()
    Rows(ræk - 1 & ":" & ræk - 1).Select
    Selection.Copy
   
    ActiveWorkbook.Sheets("ark2").Activate
    ActiveSheet.Cells(ræk2, 1).Select
    ActiveSheet.Paste
    ræk2 = ræk2 + 1
   
    Application.CutCopyMode = False
    ActiveWorkbook.Sheets("ark1").Activate
    navn = Range("A" & ræk)
End Sub

Skrevet man. d. 25. juli 2011 kl. 15:24:21| #11

idani
idani (13.565 point)
www.ci-service.dk
Hej Supertekst

Den virker bare til UG x / o / ~og hvad du ellers kan sætte på af superlativer

smider du et svar - og så takker jeg mange gange

Hilsen
Ida

Skrevet man. d. 25. juli 2011 kl. 15:27:43| #12

supertekst
supertekst (139.454 point)
supertekst-it.dk
Hej Ida - tak for de pæne ord - og selv tak samt et svar...

Skrevet tir. d. 26. juli 2011 kl. 12:01:31| #13

idani
idani (13.565 point)
www.ci-service.dk
hej Supertekst

Håber det er ok jeg lige spørger igen.

Jeg har stor glæde af din macro - men er løbet ind i en lille udfordring.
Kan vi ikke få den til at PastSpecial - Values og Formats.

jeg har selv forsøgt flere forskellige versioner, men der kommer bare en fejl 400 op :o(

/Ida

Skrevet tir. d. 26. juli 2011 kl. 12:24:08| #14


Skrevet tir. d. 26. juli 2011 kl. 12:38:14| #15

supertekst
supertekst (139.454 point)
supertekst-it.dk
Rem version 3
Dim antalRæk As Long, ræk As Long, ræk2 As Long
Dim navn As String
Public Sub nyestePension()
Rem beregn antal rækker
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    ræk2 = 2
   
    Application.ScreenUpdating = False
   
    For ræk = 2 To antalRæk
        If ræk = 2 Then                        'opstart
            navn = Range("A2")
        Else
            If Range("A" & ræk) <> navn Then
                udførBrud
            End If
        End If
    Next ræk
Rem sidste brud
    udførBrud
    Application.ScreenUpdating = True
End Sub
Private Sub udførBrud()
    Rows(ræk - 1 & ":" & ræk - 1).Select
    Selection.Copy
   
    ActiveWorkbook.Sheets("ark2").Activate
    ActiveSheet.Rows(ræk2 & ":" & ræk2).Select
   
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    ræk2 = ræk2 + 1
   
    Application.CutCopyMode = False
    ActiveWorkbook.Sheets("ark1").Activate
    navn = Range("A" & ræk)
End Sub

Skrevet tir. d. 26. juli 2011 kl. 13:19:09| #16

idani
idani (13.565 point)
www.ci-service.dk
perfekt det funker bare - mange tak for hjælpen

/ida

Skrevet tir. d. 26. juli 2011 kl. 13:31:28| #17


Skrevet tir. d. 26. juli 2011 kl. 15:17:40| #18

idani
idani (13.565 point)
www.ci-service.dk
hej Supertekst

kan jeg lokke dig til at kigge på

http://www.eksperten.dk/ (...)

nu har jeg forsøgt at løse den selv ved hjælp af VBA - men jeg kan ikke få den til det :(
beklager misbruget af dig

/IDa

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Antal Unikke værdier - men kun ved given betingelse

Oprettet den 21. maj 2013 kl. 21.21
manutddp giver 60 point for svar | Giv et svar »

Dynamisk sum i VBA

Oprettet den 21. maj 2013 kl. 14.23
kim1a giver 150 point for svar | Giv et svar »

overføre data fra et ark til et andet

Oprettet den 21. maj 2013 kl. 10.42
bjarnehansen giver 200 point for svar | Giv et svar »

Seneste guides

Slettet
Håndtering af tekstoversættelse i...
Parameteriseret tekstformatering i C#
C++ Historie og Programmering - Del 1







Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

Tre Ubuntu-udgaver får kniven

Selskab tynder alvorligt ud i antallet af Ubuntu-versioner. Tre udgaver af den populære Ubuntu-distribution sendes på pension.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger