Umiddelbart vil jeg sige du ikke skal bruge et opslag. Flere værdier i en celle lyder ikke rigtig ideelt. Har du overvejet at måske bruge et autofilter istedet? Menu - data - filter - autofilter. Så kunne du filtrere på 1 og få alle dine offset værdier i hver sin celle. Hilsen Luffe
Public Function XOpslag(Kriterie As Variant, Område As Range, ResKolonne As Integer) As String Application.Volatile Om = Range(Område.Address) For i = 1 To UBound(Om) If Om(i, 1) = Kriterie Then XOpslag = XOpslag & " " & Om(i, ResKolonne) End If Next End Function
Public Function XOpslag(Kriterie As Variant, Område As Range, ResKolonne As Integer) As String Application.Volatile For i = 1 To Område.Rows.Count If Område(i, 1) = Kriterie Then XOpslag = XOpslag & " " & Område(i, ResKolonne) End If Next End Function
Den sidste er rigtig god, næsten som jeg ønsker det. Men alle resultaterne skal stå i hver sin celle, også selvom de har samme værdi. Som den står deroppe kommer alle af samme værdi i en enkelt celle. Kan det lade sig gøre ?
Public Function XOpslag(Kriterie As Variant, Område As Range, ResKolonne As Integer) As Variant Dim Res() As Variant, X As Integer Application.Volatile X = 0 For I = 1 To Område.Rows.Count If Område(I, 1) = Kriterie Then ReDim Preserve Res(X) Res(X) = Område(I, ResKolonne) X = X + 1 End If Next XOpslag = Res End Function
skrives sådan i formellinjen,samtidig med at du har markeret det antal celler, på samme række, som du mener vil blive returneret som maksimum.'
I kolonne A vil tallene løbende skifte Kolonne B er navne (klasser) Kolonne C skulle gerne løbende rangere klasserne alt efter hvilken placering de har. I eksemplet er der 7 klasser og skulle gerne have rangeres i 7 celler.
Det har du nok ret i...jeg har ikke brugt excel ret meget, så jeg kender ikke til ret mange funktioner. Det eneste krav er, at den løbende selv skal sortere, da pc'en hele tiden opdaterer sig selv via projektdeling (flere pc'ere om en excel fil)
Jeg ved ikke hvorfor den anden sidste linje er med: "Application.Run "'trimdag97-03klar.xls'!run" Den var ikke med anden gang jeg lavede makroen.hmmm gør det nogen forskel???
Det korte og det lange er at makroen kun kører 1 gang Jeg har sat det hele ind i modules- module2 (har en makro der gemmer hele arket hvert 20 sek. i module1.
Dim Tid As Date
Public Sub StartSortering() Tid = Now() + TimeSerial(0, 0, 20) Application.OnTime Tid, "Sorter", , True End Sub
Public Sub StopSortering() Application.OnTime Tid, "Sorter", , False End Sub
Sub sorter() ' ' sorter Makro '
' ActiveWorkbook.Worksheets("Ark1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").AutoFilter.Sort.SortFields.Add Key:=Range( _ "B4:B8"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Ark1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.