Moin allerseits,
ich brauch mal wieder Hilfe, sonst hack ich mir die Finger wund.
Ich habe eine recht grosse Excel-Datei in der alle Informationen unserer Brandmeldeanlage dokumentiert sind.
Verschiedene Leute nehmen Änderungen an der Anlage vor und diese Änderungen muss ich übernehmen.
Ich kann aus der BMA eine CSV exportieren mit diversen Informationen, die ich dann an meine Datei übertragen muss.
Da die Anlage recht umfangreich ist es manchmal schwierig überhaupt die Unterschiede zu finden.
Nunja, ich hab erst mal eine Bsp.Datei gebastelt in der das Problem grob umrissen wird.
Es gibt wahrscheinlich noch Fragen. Achja, und bitte nur den Code hier posten, weil unsere EDV xlsm blockt.
Sub uebertrag()
Dim lngZeile As Long
Dim strSuch As String
Dim lngZiZeile As Long
Dim zelle As Range
Dim ersteAdresse As String
lngZiZeile = 1
For lngZeile = 2 To Tabelle2.Range("A1").End(xlDown).Row 'strSuch =
If Tabelle2.Cells(lngZeile, 4) = "" Then
strSuch = Tabelle2.Cells(lngZeile, 3) & "/00"
Else
strSuch = Tabelle2.Cells(lngZeile, 3) & "/0" & Tabelle2.Cells(lngZeile, 4)
End If
With Tabelle1.Range("B2:B" & Tabelle2.Range("A1").End(xlDown).Row)
Set zelle = .Find(strSuch, LookIn:=xlValues)
If Not zelle Is Nothing Then
ersteAdresse = zelle.Address
Do
lngZiZeile = lngZiZeile + 1
Tabelle3.Cells(lngZiZeile, 1) = Tabelle1.Cells(lngZeile, 3)
Tabelle3.Cells(lngZiZeile, 2) = Tabelle1.Cells(lngZeile, 4)
Tabelle3.Cells(lngZiZeile, 4) = Tabelle1.Cells(lngZeile, 9)
Set zelle = .FindNext(zelle)
Loop While Not zelle Is Nothing And zelle.Address <> ersteAdresse
End If
End With
Next lngZeile
End Sub
Viele Grüße
Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
03.05.2021, 09:05 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2021, 09:07 von schauan.)
Hallöchen,
Du könntest den CSV-Export mittels Kopieren - Inhalte einfügen - Werte in ein vorbereitetes Blatt einfügen wo entsprechende Formeln vorbereitet sind, die Dir die Arbeit abnehmen. Wäre dann ohne Code möglich ... Die Frage wäre lediglich, was recht groß ist und welche Performance sich bei einer Formellösung dadurch ergibt. Im Prinzip mal so, nur für B & C Abgleich
Arbeitsblatt mit dem Namen 'CSV-Export'
A
B
C
D
E
F
G
H
I
1
Objekt
Abschnitt
Meldergruppe
Nr.
Text
2
1200
1200
8001
EG BA9 Flur EBZ_69
0
1
3
1200
1200
8001
1
EG BA9 Flur EBZ_69
0
1
Zelle
Formel
I2
=ZÄHLENWENN(Peripherie!B:B;C2&"/"&TEXT(D2;"00"))
I3
=ZÄHLENWENN(Peripherie!B:B;C3&"/"&TEXT(D3;"00"))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Hi,
Danke schon mal für die ersten Ideen.
@Klaus-Dieter. Habe den Code mal ausprobiert (Tabellenblätter mussten angepasst werden).
Unterschiede hat er aber nicht abgeglichen und in Tabelle3 hab ich ziemlich unsinnige Einträge bekommen.
@schauan. Formel scheidet wohl aus.
jede Antwort und jedes Programm kann nur so gut sein, wie die Anfrage. Habe das, so wie ich es verstanden hatte, an deine Beispieldatei angepasst. Wenn das so nicht funktioniert, musst du wohl noch mal nachliefern.
Viele Grüße
Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
der erste Teil ist es die Bestandsdaten in ein Dictionary zu laden. Das sollte so gehen:
Code:
Sub Igel_abgleich()
Dim DD As Object: Set DD = CreateObject("Scripting.Dictionary")
Dim Ar
With Sheets("Peripherie")
Ar = .Cells(1).CurrentRegion
For i = 2 To UBound(Ar)
DD(Ar(i, 2) & " " & Ar(i, 3) & " " & Ar(i, 4)) = Ar(i, 9)
Next i
For Each k In DD.keys
Debug.Print k, DD(k)
Next k
End With
End Sub
Der Vergleich mit den CSV-Daten fehlt noch, aber jetzt ist erst einmal Mittagspause.
So, frisch gestärkt.
@ Klaus-Dieter. Hast natürlich recht. Ein paar Kleinigkeiten hab ich jetzt schon ausgebügelt.
Jetzt noch einmal ab dem Punkt wo die Zelle gefunden wurde.
In Peripherie muss der Text(Spalte I ) aus der CSV (Spalte E) übernommen werden.
Dann muss geschaut werden ob Spalten C,D in Peripherie mit A,B in CSV übereinstimmen.
Wenn nicht, dann am Besten Kopie der ganzen Zeile in Tabelle3.
Wenn strsuch nicht gefunden wurde ebenso.
Ich hoffe das ist jetzt besser erklärt.