sylvester-ponte
Verenigingslid
- Lid geworden
- 19 apr 2007
- Berichten
- 6.620
hoi bifi
bedoel je zo iets?
let op alleen waarden boven in de kolommen A en B
probeer het eens uit door met F8 (stap voor stap ) het programma te runnen
groet sylvester
bedoel je zo iets?
let op alleen waarden boven in de kolommen A en B
Code:
Sub tabelmaken()
optionbase = 1 'eerste cell en een gebied = gebied(1,1)
Dim totaal As Integer 'totaal geeft totaal aantal lijnen aan
Dim invoer As Range 'hier staan jouw punten
Dim uitvoer As Range 'hier komt jouw tabel
Dim tellerKolomA As Integer 'tellerKolomA telt het aantal unike punten in kolom "A"
Dim teller As Integer
Dim kolomA As Integer
Dim kolomB As Integer
kolomA = 1
kolomB = 2
Cells.NumberFormat = "@" 'zet alle cellen op tekst formaat
If Cells(1, kolomA) = "" Then
MsgBox "A1 is leeg de invoer moet op bovenaan in de eerste twee kolommen staan"
End
End If
totaal = 0 'totaalaantal punten in kolom A
Do
totaal = totaal + 1
Loop Until Cells(totaal, 1) = ""
totaal = totaal - 1
Rows("1:1").Select 'ruimte maken boven de eerste "lijn" dit maakt het programma eenvoudiger
Selection.Insert Shift:=xlDown
Set invoer = Range(Cells(2, kolomA), Cells(totaal + 1, kolomB))
'nu gaan we sorteren
invoer.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Set uitvoer = Range("D2") 'de plaats van de tabel wordt hier door bepaald
tellerKolomA = 0
For teller = 1 To totaal
uitvoer(0, teller) = invoer(teller, kolomB)
If invoer(teller, kolomA) <> invoer(teller - 1, kolomA) Then 'hier het voordeel van de toegevoegde ruimte
tellerKolomA = tellerKolomA + 1
uitvoer(tellerKolomA, 0) = invoer(teller, kolomA)
End If
uitvoer(tellerKolomA, teller) = "x"
Next teller
Set uitvoer = Range(Cells(1, 3), Cells(tellerKolomA + 1, teller + 2))
uitvoer.Select
End Sub
groet sylvester
Laatst bewerkt: