AW: Daten aus externer Datei + Zuorbnung von Daten
11.08.2017 23:34:38
Daten
Hallo Martin,
eigentlich sprechen die Namen der Variablen und die englischen Bezeichnungen der verwendeten Funktionen ja für sich.
Aber hier für dich das ganze Makro nochmals alsRoman mit Kommentaren.
Gruß
Franz
Sub NeueMA_nach_MappeB()
'Deklaration der Variablen
Dim wksAB As Worksheet, wksB As Worksheet 'Objekt-Variablen für Tabellenblätter
Dim Spa_AB As Long 'laufender Spaltenzähler
Dim Zei_AB_L As Long 'Merker für letzte Zeile mit Inhalt in Blatt "Mappe_A+B"
Dim Spa_B_L As Long 'Merker für freie Spalte in Blatt "MappeB"
Dim strMA As String 'Merker für zu suchenden Inhalt in Zeile 1
Dim rng_B As Range 'Zellbereich in Blatt "MappeB"
Dim varAB As Variant 'Merker für Zellinhalte in Blatt "Mappe_A+B
'Tabellenblätter setzen
Set wksAB = ThisWorkbook.Sheets(1) 'Blatt "Mappe_A+B" - Tabellenblatt mit den Formeln
Set wksB = ThisWorkbook.Sheets(2) 'Blatt "Mappe_B" - Tabellenblatt mit festen Werten
With wksAB ' Blatt "Mappe_A+B"
'Letzte Zeile mit Inhalt in Spalte A ermitteln
Zei_AB_L = .Cells(.Rows.Count, 1).End(xlUp).Row
'Spalte B bis zur letzten Spalte mit Inhalt in Zeile 1 abarbeiten
For Spa_AB = 2 To .Cells(1, Columns.Count).End(xlToLeft).Column
'Prüfen, ob in Spalte der Zellinhalt in Zeile 1 verschieden von "" und 0 ist.
If .Cells(1, Spa_AB).Value 0 And .Cells(1, Spa_AB).Value "" Then
'angezeigten Inhalt der Zelle in Variable merken
strMA = .Cells(1, Spa_AB).Text
'gemerkten Wert in Zeile 1 von Blatt "MappeB" suchen
Set rng_B = wksB.Rows(1).Find(What:=strMA, LookIn:=xlValues, lookat:=xlWhole)
If rng_B Is Nothing Then 'Wert in Zeile 1 nicht gefunden
'Werte in Spalte von Zeile 1 bis zur letzen Zeile in Variable merken
varAB = .Range(.Cells(1, Spa_AB), .Cells(Zei_AB_L, Spa_AB))
With wksB 'Blatt "MappeB"
'nächste freie Spalte in Zeile 1 von "MappeB" ermitteln
Spa_B_L = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
'Zellbereich setzen in dem die Werte aus "MappeA+B" eingefügt werden _
sollen
Set rng_B = .Range(.Cells(1, Spa_B_L), .Cells(Zei_AB_L, Spa_B_L))
'Werte aus "MappeA+B" einfügen
rng_B = varAB
'Zellbereich in Spalte von Zeile 2 bis zur letzten eingefügten Zeile _
setzen
Set rng_B = .Range(.Cells(2, Spa_B_L), .Cells(Zei_AB_L, Spa_B_L))
'0-Werte durch nichts ersetzen
rng_B.Replace "0", "", lookat:=xlWhole
'Inhalt in Zellen durch "x" ersetzen
rng_B.Replace "*", "x", lookat:=xlWhole
End With ' wksB
End If
End If
Next
End With 'wksAB
End Sub