| Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin. |
Diskussion: Excel: gleiche punkte finden im Forum Applikationen, in der Kategorie Software Home; Anzeige Hallo ;) Habe ein Problem: Habe 9 verschiedene Datensätze mit jeweils ca. 1450 Datenzeilen. Diese Zeilen sind folgendermaßen aufgebaut ...
![]() |
| | #1 (permalink) |
| Registriert seit: 30.11.03 ![]() Likes: 0 | Anzeige Hallo ;) Habe ein Problem: Habe 9 verschiedene Datensätze mit jeweils ca. 1450 Datenzeilen. Diese Zeilen sind folgendermaßen aufgebaut (siehe auch Screenshot) : X-Koordinate von Punkt1 | Y-Koord. v. Pkt.1| X-Koord. v. Pkt.2| Y-Koord. v. Pkt2| Messergebnis Jetzt will ich jeweils 2 Datensätze vergleichen, ohne die Reihenfolge zu ändern -> Es sollen in den verschiedenen Datensätzen Zeilen gefunden werden, welche die gleichen Koordinaten haben ( x1|y1|x2|y2|). Warum das Ganze? Weil ich erwarte, daß sich die Meßergebnisse leicht unterscheiden und ich in den beiden Datensätze diese durch den Mittelwert ersetzen will. Problem: Die Reihenfolge der jeweiligen Zeilen darf nicht verändert werden, somit fällt leider die Sortiermöglichkeit aus. Im Screenshot sieht man ein Beispiel zweier nebeneinander dargestellter Datensätze. Ich verwende Excel2007. Hoffe, ich habe mich halbwegs verständlich ausgedrückt ;) und bedanke mich jetzt schon für eure Hilfe. LG GKL |
| | |
| | #2 (permalink) |
| Registriert seit: 07.03.08 ![]() Likes: 0 | 1. Das sollte sich eigentlich durch ein kleines VBA makro gleich in Excel lösen lassen. Evtl. habe ich am Abend Zeit, dann poste ich mal ein kleines Makro. 2. Alternativ kopierst du die Tabelle und sortierst du die Datensätze und siehst sofort welche dass mehrfach vorkommen - diese kannst du dann händisch im Original angleichen - wenn es nicht zuviele sind. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 30.11.03 ![]() Likes: 0 | hallo 90nop danke für die antwort es sind leider viele gleiche datenzeilen, da ich beim messen mit einer 50% überlappung gearbeitet habe. zweites leider: kann keine makros schreiben ![]() aber die idee mit den makros bringt mich drauf, mein problem ein biss. klarer zu posten: wenn(koord. datensatz1)==(koord. datensatz2) dann (Messwert_Mitt=(Messwert1+Messwert2)/2). schön wäre es auch, wenn ich ein wenig kontrolle über diese aktion haben könnte, also die berechnungen extra sehen könnte -> 3 spalten, welche mir Messwert1, Messwert2 und Messwert_Mitt zeigen. lg gkl |
| | |
| | #4 (permalink) |
| Registriert seit: 07.03.08 ![]() Likes: 0 | hallo, ich habe mal damit begonnen. der code vergleicht sämtliche Zellen und sucht gleiche Punkte - in eine Zelle dahinter wird der Mittelwert geschrieben. So noch nicht zu verwenden, aber das grundsätzliche Vorgehen geht in die Richtung. Ich muss noch herausfinden wie man Werte von den Zellen lesen/schreiben kann ohne sie zu selektierten. Code: Aktueller code am Ende des Threades ![]() btw:vb nervt EDIT: Ein EXCEL sheet angehängt, kannst mal etwas mit rumspielen ![]() .txt Endung entfernen. EDIT2: Codeverweis. Geändert von 90nop (11.03.10 um 08:54 Uhr) |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 30.11.03 ![]() Likes: 0 | wow super!vielen dank für deine mühe! da bekomm ich doch glatt ein schlechtes gewissen, wenn ich sehe, wieviel zeit du hierfür investierst. hatte mir nicht gedacht, daß das so kompliziert ist ![]() lg gkl |
| | |
| | #6 (permalink) | |
| Registriert seit: 07.03.08 ![]() Likes: 0 | Zitat:
Code: Sheets("Tabelle1").Range("A1").Value = "Hallo" EDIT: Noch eine wichtige Frage: Können die gleichen Koordinaten auch innerhalb eines Datensatztes auftreten oder sind gleiche Koordinaten in einem Datensatz eindeutig? EDIT2: So, das Makro macht nun folgendes: Es sucht nach doppelten Koordinaten und berechnet den Mittelwert und überschreibt mit diesem das Ohm Resultat - der ursprüngliche Wert des Resultates wird einfach eine Zelle dahinter geschreiben. Code: aktueller code am Ende des Threades EDIT3: Codeverweis Geändert von 90nop (11.03.10 um 08:54 Uhr) | |
| | |
| | #7 (permalink) |
| Themenstarter Registriert seit: 30.11.03 ![]() Likes: 0 | hallo 90nop, zur frage: es können _keine_ doppelten koordinatensätze in einem datensatz vorkommen. das makro funktioniert super. ein wenig aufwendig ist nur, daß, wenn ein doppelter koordinatensatz gefunden wird, das informative popupfenster das OK bestätigt bekommen will hab dir mal ein realbeispiel angehängt ![]() lg gkl |
| | |
| | #8 (permalink) | |
| Registriert seit: 07.03.08 ![]() Likes: 0 | Zitat:
einfach die Zeile: Code: MsgBox "Doppelte Definition von Koodinaten gefunden: " & iCNT Ich schau mir mal deine Daten an. ![]() EDIT: hier der aktuelle code: Code: Sub test()
Dim sCELL As String
Dim iCNT As Integer
iCNT = 5
Do
sCELL = Range("A" & iCNT).Value
If sCELL = "" Or IsNull(sCELL) Then Exit Do
CheckKoord (iCNT) 'überprüfe auf gleiche Koordinaten
iCNT = iCNT + 1
Loop
End Sub
'erwartet Zeilennummer
'checkt ob die Koordinaten im Zweiten Datensatz zu finden sind.
'ändert die Werte auf einen Mittelwert und schreibt den originalen dahinter.
Private Function CheckKoord(row As Integer)
Dim iCNT As Integer 'Zähler für Loop
Dim var As String
'Die row zum checken (Datensatz 1):
Dim ik_d1_x1 As Integer
Dim ik_d1_y1 As Integer
Dim ik_d1_x2 As Integer
Dim ik_d1_y2 As Integer
Dim ohm_d1_res As Double
'Die row zum checken (Datensatz 2):
Dim ik_d2_x1 As Integer
Dim ik_d2_y1 As Integer
Dim ik_d2_x2 As Integer
Dim ik_d2_y2 As Integer
Dim ohm_d2_res As Double
'lese die zu überprüfenden Koordinaten aus:
ik_d1_x1 = CInt(Range("A" & row).Value)
ik_d1_y1 = CInt(Range("B" & row).Value)
ik_d1_x2 = CInt(Range("C" & row).Value)
ik_d1_y2 = CInt(Range("D" & row).Value)
ohm_d1_res = Range("E" & row).Value
iCNT = 5
Do
If Range("G" & iCNT).Value = "" Or IsNull(Range("G" & iCNT).Value) Then Exit Do
ik_d2_x1 = CInt(Range("G" & iCNT).Value)
ik_d2_y1 = CInt(Range("H" & iCNT).Value)
ik_d2_x2 = CInt(Range("I" & iCNT).Value)
ik_d2_y2 = CInt(Range("J" & iCNT).Value)
If ik_d1_x1 = ik_d2_x1 And ik_d1_y1 = ik_d2_y1 And ik_d1_x2 = ik_d2_x2 And ik_d1_y2 = ik_d2_y2 Then
'Alle Koordinaten der beiden Datensätze stimmen überein!
ohm_d2_res = Range("K" & iCNT).Value
Range("L" & iCNT).Value = Range("K" & iCNT).Value
Range("F" & row).Value = Range("E" & row).Value
Range("K" & iCNT).Value = (ohm_d1_res + ohm_d2_res) / 2
Range("E" & row).Value = (ohm_d1_res + ohm_d2_res) / 2
End If
iCNT = iCNT + 1
Loop
End Function | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Ich kann alle im Netzwerk finden, mich kann man auch finden aber nicht zugreifen | Strahl | Network · LAN, WAN, Firewalls | 11 | 21.07.05 16:52 |
| Punkte auf dem Bildschirm | NMK | Die Problemzone | 6 | 17.04.05 08:03 |
| 3DMark2003 zu wenig Punkte? | IceTray | Die Problemzone | 6 | 14.03.03 11:59 |
| Punkte-Rätsel | Chris | Fun Section | 27 | 18.12.02 23:21 |