Gå til innhold

[Løst] HJELP TIL Excel macro for Autosortering


AnAbo

Anbefalte innlegg

Hey! Jeg trenger ett stykke hjelp med EXCEL!

Jeg lager et sheet som skal sortere rundetider og navn etter hvert som de blir fylt inn via VBA.

 

Problemet er å få en macro som automatisk sorterer tidene, og navnene deretter til å fungere, så dette kan gå automatisk.. fikk denne til å fungere, men så kræsja excel, og måtte lage alt på nytt.. nå får jeg den ikke til å funke:

 

Private Sub Worksheet_Change(ByVal Target As Range)

Range("A2").Select

Range(Selection, Selection.End(xlDown)).Select

With Selection.Validation

.Delete

.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _

Operator:=xlGreaterEqual, Formula1:="1"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = "Navn"

.ErrorTitle = "Navn"

.InputMessage = "Fyll inn ett navn."

.ErrorMessage = "Please skriv inn et navn!"

.ShowInput = True

.ShowError = True

End With

Range("B2").Select

Range(Selection, Selection.End(xlDown)).Select

With Selection.Validation

.Delete

.Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _

:=xlGreaterEqual, Formula1:="0.00"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = "Tid"

.ErrorTitle = "Tid"

.InputMessage = "Skriv inn en tid (00,000)!"

.ErrorMessage = "Se om du har skrevet inn en tid"

.ShowInput = True

.ShowError = True

End With

Dim erow As Long

erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

Range("B:B").Select

Range("A:B").Sort Key1:=Range("B2"), Order1:=xlDescending, Header:= _

xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortNormal

If Cells(erow - 1, 1).Offset(0, 1) = "" Then

Cells(erow - 1, 1).Offset(0, 1).Select

Else

Cells(erow, 1).Select

End If

End Sub

 

Noen som har en enklere måte å gjøre det på?

Autosort macro.

Regnearket heter "StartRunder"

Jeg skal sortere TID "fra kollonne A, rad 2 og nedover"

Hvor navn skal sorteres deretter "fra kollonne B, rad 2 og nedover"

 

På forhånd, tusen takk for at det finnes folk som dere der ute!

Endret av Soetz
Lenke til kommentar
Videoannonse
Annonse

Her er en løsning uten makroer:

 

 

Skriv inn tidene fra B2 og nedover

Skriv følgende formel i A2 og kopier nedover: =IF(B2>0;RANK(B2;B:B;1);"")

Skriv inn navnene på deltakerne fra C2 og nedover

Skriv 1 i D2, 2 i D3, 3 i D4 osv

Skriv =IFERROR(VLOOKUP(SMALL($A:$A;D2);$A:$B;2;0);"") i E2 og kopier nedover.

Skriv =IFERROR(VLOOKUP(SMALL(A:A;D2);A:C;3;0);"") i F2 og kopier nedover.

Hvis du vil se delte plasseringer, skriv =IFERROR(SMALL(A:A;D2);"") i G2 og kopier nedover.

 

Håper du kan bruke denne løsningen!

 

Her er formlene på norsk:

=HVIS(B2>0;RANG(B2;B:B;1);"")

=HVISFEIL(FINN.RAD(N.MINST($A:$A;D2);$A:$B;2;0);"")

=HVISFEIL(FINN.RAD(N.MINST(A:A;D2);A:C;3;0);"")

=HVISFEIL(N.MINST(A:A;D2);"")

Endret av Concombre
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...