Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

sortiern und Paare nummerieren

sortiern und Paare nummerieren
30.06.2006 16:33:11
felix
Hallo
Ich hab folgendes Problem:
Ich hab eine Tabelle mit 3 Spalten: ID, Höhe und Lage. Bei der Lage wird zwischen N und S unterschieden. Nun sollen die Daten der Höhe nach sortiert und dann verglichen werden ob ein Höhenwert der Lage S einem Höhenwert N +-10m entspricht. Ist dies der Fall soll diesem Paar die selbe Id zugeordnet werden.
Hier ein Beispiel wie die Tabelle am Schluss aussehen sollte:
ID | Höhe | Lage
1 | 125m | S
1 | 128m | N
- | 136m | N
2 | 212m | N
2 | 220m | S
- | 232m | N
- | 260m | N
3 | 265m | N
3 | 270m | S
Ich bin am VBA lernen und wäre schon froh wenn ihr mir ein paar ansatzpunkte geben könntet. Sortieren mit sort bring ich gerade noch zu stande, aber wie man dann das ganze vergleicht und vor allem beiden Zeilen die selbe ID zuweist ist mir unklar.
grüsse
felix

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sortiern und Paare nummerieren
30.06.2006 21:32:37
Frederik
Hallo Felix
Probiers mal mit dem folgendem VBA-Code. Das Programm geht davon aus, das deine Werte in den Spalten A bis C stehen. die Ausgabe der GruppenID erfolgt dann in Spalte A. Ausserdem bin ich davon ausgegangen, das die Meter-Werte in Spalte B als Zahl eingegeben werden. Also der Wert zB. 260 und nicht "260m" ist.
Gruß
Frederik
--------------
Option Explicit

Sub GroupId()
Const MAXDIFF = 10
Dim oA, oB As Object
Dim myrange As Range
Dim iGroupid As Integer
Dim bNextId As Boolean
Set myrange = Range(Cells(1, 2), Cells(1, 2).End(xlDown))
iGroupid = 1
For Each oA In myrange
If oA.Offset(, -1) = 0 Then
For Each oB In myrange
If oA <> oB Then
If Abs(oA - oB) <= MAXDIFF Then
If oA.Offset(, 1) <> oB.Offset(, 1) And oB.Offset(, -1) = 0 Then
MsgBox Abs(oA - oB)
oA.Offset(, -1) = iGroupid
oB.Offset(, -1) = iGroupid
bNextId = True
End If
End If
End If
Next
If bNextId Then
iGroupid = iGroupid + 1
bNextId = False
End If
End If
Next
End Sub

Anzeige
AW: sortiern und Paare nummerieren
03.07.2006 15:08:11
Felix
Vielen Dank für die schnelle Antwort.
Der Code funktionierte jedoch nicht auf anhieb. Ich hab die 2 For-Schleife entfernt und einfach alle oB durch oA.Offset(1) ersetzt.
Ich denke die Fehlermeldung vom orig. Code war, weil oA identisch mit oB war und sich oB nicht auf die nächste Zeile bezog.
Trotzdem noch ne kleine Frage:
kann man oA.Offset (1) durch eine Variable ersetzen z.B oB= oA.Offset (1) o.ä.
Antwort hat mir sehr geholfen.
felix

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige