09. september 2004 - 16:43Der er
6 kommentarer og 1 løsning
Hjælp til Excel, sortering af data + konvertering til binært
Er der nogen der kan hjælpe mig med følgende:
Jeg har 50 forskellige lokationer hvor jeg har været ude at samle insekter, disse insekter er på forhånd angivet med et nummer fra 1-1000, det er langt fra alle typer af insekter der forekommer på mine (og forsøget er gentaget et antal gange) Tallene skal nu skrives ind i excel.
Jeg starter med i første række at angive hvilke dyr der forekommer i hvert forsøg, der er typisk 20 arter i hvert forsøg, jeg skal nu for hver lokation angive om arten er der eller ej (binært). Jeg kunne godt tænke mig at jeg indtastede alle tallene og derefter sorterede dem således at tallener er sorteret i rækkefølge (Efter kolone A) hvorefter de skal laves om til 1 eller 0. Her er et simplificeret eksemple:
originale data:
A B C D etc 1 14 1 400 3 60 9 6 8 9 14 60 89 114 400 567 890
Det skal så sorters så de kommer til at se sådan ud:
A B C D etc 1 1 3 6 8 9 9 14 14 60 60 89 114 400 400 567 890
Derefter vil jeg have lavet alle tal binære, undtagen koden (a)
A B C D etc 1 0 1 0 3 0 0 0 6 0 0 0 8 0 0 0 9 0 1 0 14 1 0 0 60 1 0 0 89 etc 114 400 1 567 890
Når du højreklikker på fanen af et ark og vælg vis programkode Kan du i venstre side se dine arknavne.
Oppe i menulinien vælger du Insert > module
Nu kan du se ovre under arkene til venstre står Module1.
Se nu er Module1 makeret med grå baggrund, det er her den koden skal være
***** kode
Sub SorteringOgBin() Dim Temp() As Variant, RankArray As Variant, N As Long, i As Integer, j As Integer Dim swap As Boolean, Col As Integer, T As Integer RankArray = Selection ' makeringen på regnearket N = UBound(RankArray) Col = Selection.Columns.Count ReDim Temp(Col) swap = True If Col > 1 Then SortKolonne = 1 A = Val(SortKolonne) Else A = 1 End If ' sortering Do While swap swap = False For i = 1 To N - 1 For j = i To N If RankArray(i, A) > RankArray(j, A) Then For T = 1 To Col Temp(T) = RankArray(i, T) RankArray(i, T) = RankArray(j, T) RankArray(j, T) = Temp(T) Next swap = True End If Next Next Loop ' bin 0 og 1 For i = 1 To N For T = 2 To Col If RankArray(i, T) > 0 Then RankArray(i, T) = 1 Else RankArray(i, T) = 0 End If Next Next Worksheets("ark2").Activate ' arket det skal over i Range(Cells(1, 1), Cells(N, Col)) = RankArray End Sub
*** kode slut
Hvis jeg er dig vil jeg lade den sætte resultatet, over i et andet ark,
Her i koden gør den det til Ark2 , så ret ark2 til det ark du vil have det over i.
Super. Nu virker det tak. smider du lige et svar! Men det virker kun hvis alle tal står i øverste række, så der er ikke plads til en overskrift i hver kolonne, ellers bliver det hele en forskudt, kan man gøre formlen mere fleksibel eller må jeg bare sørge for at de altid står overst. Tak
Det virker selv om du har overskrifter begge steder, så ser formlen sådan ud i B2: = TÆL.HVIS(Ark1!B:B;$A2)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.