Makro Inhalt Suche

Hallo Fotomustang,
ist ja schon ein großer Name…

eigentlich hast du in deiner Anfrage gar nichts ausgesagt!
Was willst du eigentlich?

Die Tabelle ist groß, na und, dafür sind Tabellen da.
Der relevante Bereich befindet sich mittig, ja…wo?

Die richtige Beschreibung wäre z.B.:

Meine Tabelle umfasst ca.15000 Zeilen mit 25 Spalten.
Die relevanten Daten befinden sich in Spalte-K + Spalte-L.

Damit kann ich was anfangen.

Was soll ich mit der Aussage „der Bereich schwimmt“ anfangen?
Ich gebe keinen Schwimmunterricht.

Nach welchen Daten suchst du eigentlich?

Bitte dein Problem ordentlich formulieren und dann nochmals an mich senden.

Vielleicht auch eine Beispieldatei mit einer ausführlicheren Beschreibung als Word-Dokument anhängend.

Mit Wischi-Waschi und Schwimmen kann ich nichts anfangen.

Bitte senden an „[email protected]

Wenn ich die Dateien habe, kann ich vielleicht weiter helfen.

mfg
Softoldi

Grüezi Jo

Ich fürchte so schwammig/schwimmend wie deine Daten wird auch meine Antwort werden… ;-9

nur die benötigten Spalten darstellt.

Definiere anhand klarer Angaben (Inhalt der Spalte und/oder Spalten-Namen oder anderes) welches die benötigten Spalten sind.

Die Tabelle ich groß und der relevante Bereich befindet sich
mittig. So muss ich die ersten paar Zeilen ( 80 bis 100 sind
es etwa, der Bereich „schwimmt“ ) löschen oder ausblenden.

Wie definierst Du diesen ‚schwimmenden‘ Bereich?
Welche Kriterien gibt es dafür?

Die

darauf folgenden paar Tausend Werte brauche ich, die darunter
nicht mehr ( hide-n, löschen, egal )

Wie wird definiert ab wo gelöscht werden darf?
Welche Kriterien gibt es dafür?

Die so dargestellte gekürze Tabelle enthält drei für mich
relevante Spalten mit jeweils schwimmenden „Adressen“ (
Beispiel: K65 oder L68 ) jedoch konstander Länge ( es geht
immer gleich „tief“ runter unter der Überschrift in der
Spalte. Die Überschriften sind immer gleich - gesuchte Daten )

Auch hier wieder dieselbe Frage:
Welche konkreten Kriterien gibt es dafür?

Ohne konkrete Daten, am besten eine Beispiel-Mappe mit entsprechenden Erklärungen zu den gewünschten Daten lässt sich da nicht mehr tun, fürchte ich…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo,

also, wenn ich wüsste, wonach ich suchen muss, könnte ich helfen. Wie erkenne ich die erste Zeile bzw. die relevanten Daten?

Gruß
Natator

Hallo,

ich hätte eine VB-Lösung für Dich und ich würde Dir gerne eine Beispieldatei zusenden. Leider kann man hier nichts uploaden. Hast Du eine Mailadresse, wo ich Dir was hinschicken kann?
Gruß,
Ptonka

Hallo,
ich würde Dir gerne eine Beispieldatei schicken, die Dein Problem - denke ich - löst.
Hast Du eine Mailadresse?
Gruß,
Ptonka

Hallo Fotomustang,

mit den Angaben kann ich nicht so sehr viel anfangen.
was bedeutet schwimmen der ersten Bereiche und was ist das Kriterium für „schwimmen“ ?
Welche Werte werden gebraucht, wonach richtet sich das?
welches Kriterium steht für die benötigten Werte?

Gruß Hugo

Hallo Jo,

100%ig hab ich dich nicht verstanden.
Insbesondere wieweit das „Schwimmen“ der überschriften in den Spalten geht.

Als Basis nachfolgend ein Makro, das die Zeile mit den Überschriften sucht und dann die überflüssigen Spalten und Zeilen löscht.

Gruß
Franz

Sub Tabelle\_Aufbereiten()
 Dim wks As Worksheet
 Dim Zeile\_L As Long, Spalte\_L As Long, Zeile1 As Long
 Dim Zeile As Long, Spalte As Long
 Set wks = ActiveSheet
 Application.ScreenUpdating = False
 With wks
 'Zeile mit Überschriften suchen
 Zeile\_L = .Cells.SpecialCells(xlCellTypeLastCell).Row
 For Zeile = 1 To Zeile\_L
 If .Cells(Zeile, 1) = "Wert A" \_
 And .Cells(Zeile, 2) = "Wert Spalte B" \_
 And .Cells(Zeile, 3) = "Wert Spalte C" Then ' Spalten-Nummern/Spaltentitel anpassen!
 Zeile1 = Zeile
 Exit For
 End If
 If Zeile = Zeile\_L Then
 MsgBox "Überschriften-Ziele nicht gefunden!"
 Exit Sub
 End If
 Next
 'Nicht gewünschte Spalten von rechts her löschen
 Spalte\_L = .Cells.SpecialCells(xlCellTypeLastCell).Column
 For Spalte = Spalte\_L To 1 Step -1
 Select Case Spalte
 Case 7, 9, 11 'Spalten G, I, K - Nummern der Spalten ggf. anpassen
 'nicht löschen
 Case Else
 .Columns(Spalte).Delete shift:=xlShiftToLeft
 End Select
 Next
 'Nicht benötigte Zeilen löschen
 Zeile = Zeile1 + 1000 'Zeile ab der bis zum Ende der Liste gelöscht werden soll \_
 1000 hier anpassen
 .Range(.Rows(Zeile), .Rows(Zeile\_L)).Delete
 'Zeilen oberhalb der Überschriftenzeile löschen
 .Range(.Rows(1), .Rows(Zeile1 - 1)).Delete
 End With
 Application.ScreenUpdating = True
End Sub

moin,

mein vorschlag:

Sub x()
Dim bereich_auswahl As Range, bereich_loeschen As Range, bereich As Range, index As Integer

Set bereich_auswahl = Application.InputBox(„Zeilen wählen“, Type:=8)
Application.ScreenUpdating = False
Set bereich_loeschen = Nothing
For index = 1 To Sheets(1).UsedRange.Rows.Count
Set bereich = Cells(index, 1).EntireRow
If Application.Intersect(bereich, bereich_auswahl) Is Nothing Then
If bereich_loeschen Is Nothing Then Set bereich_loeschen = bereich Else Set bereich_loeschen = Application.Union(bereich_loeschen, bereich)
End If
Next index
bereich_loeschen.Delete

Set bereich_auswahl = Range(„B:B, D:smiley:, F:F“)
Set bereich_loeschen = Nothing
For index = 1 To Sheets(1).UsedRange.Columns.Count
Set bereich = Cells(1, index).EntireColumn
If Application.Intersect(bereich, bereich_auswahl) Is Nothing Then
If bereich_loeschen Is Nothing Then Set bereich_loeschen = bereich Else Set bereich_loeschen = Application.Union(bereich_loeschen, bereich)
End If
Next index
bereich_loeschen.Delete
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub

die „schwimmenden“ zeilen werden per popup abgefragt .

die feststehenden spalten bitte eintargen, wo „Range(„B:B, D:smiley:, F:F“)“ steht.

viel erfolg!

nochmal moin,

so gefällt es mir besser:

Sub x()
Dim spalte1 As Range, spalte2 As Range, spalte3 As Range, _
zeilen As Range, loeschen As Range, _
von As Long, bis As Long

Set spalte1 = Range(„B:B“)
Set spalte2 = Range(„D:smiley:“)
Set spalte3 = Range(„E:E“)

With Sheets(1).UsedRange
Set zeilen = Application.InputBox(„Zeilen wählen“, Type:=8).EntireRow
Application.ScreenUpdating = False

von = zeilen.Row + zeilen.Rows.Count
bis = .Row + .Rows.Count
Union(Range(Cells(1, 1), Cells(zeilen.Row - 1, 1)).EntireRow, _
Range(Cells(von, 1), Cells(bis - 1, 1)).EntireRow).Delete

Set loeschen = Range(Range(„A:A“), spalte1.Offset(, -1))

If spalte2.Column - spalte1.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte1.Offset(, 1), spalte2.Offset(, -1)))

If spalte3.Column - spalte2.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte2.Offset(, 1), spalte3.Offset(, -1)))

bis = .Column + .Columns.Count - 1
Set loeschen = Union(loeschen, _
Range(spalte3.Offset(, 1), Cells(1, bis).EntireColumn))

loeschen.Delete

Application.ScreenUpdating = True
End With
End Sub

gerade bei großen datenmengen sollte man for-next-schleifen vermeiden.

diese lösung funktioniert nur, wenn - wie in der vorgabe - beschriebene zellen vor und nach den gewählten zeilen und spalten existieren.

das klappt super!!! So kann ich die Daten sogar mit einem Makro in ein Diagramm packen!! :smile: Klasse

Problem dabei ist nur, dass die benötigten Spalten je nach Testlauf an unterschiedlichen Stellen sind. Kann ich das mit der Schleife :

Do Until Cells(iEnd, a).Value = „[Inhalt1]“
iEnd = iEnd + 1
Loop

lösen? Diese Schlefe sucht die Stelle raus, ab der Die Inhalte drin sind, die graphisch dargestellt werden müssen.

Meine Schwierigkeit ist jetzt, wie ich diese Suchschleife ( oder eine Andere Suchfunktion ) in das Makro einbinde…

Johannes

bitte schreibe mir:

sind die 3 spalten nebeneinander oder mit zwischenraum?

soll ich als überschriften nehmen:
[Inhalt1],[Inhalt2],[Inhalt3]?

sind die überschriften immer in zeile 1 oder auch mal woanders?

Sub x()
Dim spalte1 As Range, spalte2 As Range, spalte3 As Range, _
zeilen As Range, loeschen As Range, _
von As Long, bis As Long

Set zeilen = Application.InputBox(„Zeilen wählen“, Type:=8).EntireRow
Application.ScreenUpdating = False

With Sheets(1).UsedRange
Set spalte1 = .Find("[inhalt1]", , , xlByRows)
Set spalte2 = .Find("[inhalt2]", spalte1, , xlByRows)
Set spalte3 = .Find("[inhalt3]", spalte2, , xlByRows)

Set loeschen = Range(Range(„A:A“), spalte1.Offset(, -1)).EntireColumn

If spalte2.Column - spalte1.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte1.Offset(, 1), spalte2.Offset(, -1)).EntireColumn)

If spalte3.Column - spalte2.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte2.Offset(, 1), spalte3.Offset(, -1)).EntireColumn)

bis = .Column + .Columns.Count - 1
Set loeschen = Union(loeschen, _
Range(spalte3.Offset(, 1), Cells(1, bis).EntireColumn))

loeschen.Delete

von = zeilen.Row + zeilen.Rows.Count
bis = .Row + .Rows.Count
Union(Range(Cells(1, 1), Cells(zeilen.Row - 1, 1)).EntireRow, _
Range(Cells(von, 1), Cells(bis - 1, 1)).EntireRow).Delete

Application.ScreenUpdating = True
End With
End Sub

in der Datentabelle sind sie nicht nebeneinander. Sie sind ein Teil einer großen Tabelle.

Hier eine bessre Erklärung was gefordert ist:

Es liegt eine große Tabelle mit versuchsdaten vor: 12000 Zeilen lang und breit bis zur Spalte „EK“.

In der „Mitte“ der Tabelle [Zeile XXX und drunter, die Zeile XXX ist der „schwimmende Bereich“, es kann je nach Prüfstand und Versuchszyklus auch mal 106, 112, 189 oder andere Werte annehmen]

Der relevante Bereich erstreckt sich also im Zeilenbereich von XXX (variabel!) bis [XXX+10000]. In diesem Bereich sind Hunderete von Spalten mit Messdaten. Drei dieser Spalten sind für die konkrete Auswertung interessant. Die Übersriften dieser Spalten sind bekannt: Ü1, Ü2, Ü3.

SO sieht die Tabelle aus:

ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant

ZEILE relevant
Daten _ _ _ Ü1 _ _ Ü2 _ _ Ü3_ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

ZEILE nicht relevant
ZEILE nicht relevant

und SO möchte ich die Tabelle sehen:

ZEILE relevant
Daten Ü1 Ü2 Ü3
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:

Mit folgendem Makro kann das Problem schon gelöst werden:
Sub zeilenUNDspaltenAUSBLENDEN()
Dim iEnd As Integer ’ ist die Zeile
Dim i As Integer ’ Laufvariable
Dim a As Integer

a = 1 ’ Spalte A
iEnd = 1 ’ Relevanter Bereich in Sheet beginnt -> Zeilennummer

Do Until Cells(iEnd, a).Value = „[Inhalt1]“
iEnd = iEnd + 1
Loop

iEnd2 = iEnd ’ Relevanter bereicht in Sheet endet
’ -> Zeilennummer finden ab Inhalt1

Do Until Cells(iEnd2, a).Value = „[Folgeinhalt]“ ’ Folgeinhalt als Abschnittsende
iEnd2 = iEnd2 + 1
Loop

For i = 2 To iEnd - 1 ’ erste Zeile stehen lassen, Buttons weiterhin sichtbar
Cells(i, 1).EntireRow.Hidden = True
Next i ’ Zeilen ausblenden

For i = iEnd2 To 12222 'ERSTE LEERE ZEILE finden, Nummer in Variable schreiben
Cells(i, 1).EntireRow.Hidden = True
Next i

’ Spalten ausblenden

For i = 2 To 200
’ 150: Die Nummer der letzten Spalte, die durchsucht
’ werden und aus/eingeblendet werden soll
’ 2: So bleibt die erste Spalte erhalten
Select Case Cells(iEnd + 1, i).Value
Case „Spalteninhalt1“
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt2"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt3"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt4"
Cells(iEnd, i).EntireColumn.Hidden = False
Case Else
Cells(iEnd, i).EntireColumn.Hidden = True
End Select
Next i

End Sub

DIese Lösung birgt für mich die Schwierigkeit, dass ich die Daten ( eingeblendet, Rest irrelevant und ausgeblendet ) nicht mit einem Makro in eine Grafik verarbeiten kann - die relevanten Spalten sind haben keine feste Nummer… Ich weiss nicht wie ich die Spalten in Variablen verarbeiten kann, bzw. meine versuche scheitern. Ich hoffe ich habe es verständlich beschrieben =)))

in der Datentabelle sind sie nicht nebeneinander. Sie sind ein Teil einer großen Tabelle.

Hier eine bessre Erklärung was gefordert ist:

Es liegt eine große Tabelle mit versuchsdaten vor: 12000 Zeilen lang und breit bis zur Spalte „EK“.

In der „Mitte“ der Tabelle [Zeile XXX und drunter, die Zeile XXX ist der „schwimmende Bereich“, es kann je nach Prüfstand und Versuchszyklus auch mal 106, 112, 189 oder andere Werte annehmen]

Der relevante Bereich erstreckt sich also im Zeilenbereich von XXX (variabel!) bis [XXX+10000]. In diesem Bereich sind Hunderete von Spalten mit Messdaten. Drei dieser Spalten sind für die konkrete Auswertung interessant. Die Übersriften dieser Spalten sind bekannt: Ü1, Ü2, Ü3.

SO sieht die Tabelle aus:

ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant

ZEILE relevant
Daten _ _ _ Ü1 _ _ Ü2 _ _ Ü3_ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

ZEILE nicht relevant
ZEILE nicht relevant

und SO möchte ich die Tabelle sehen:

ZEILE relevant
Daten Ü1 Ü2 Ü3
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:

Mit folgendem Makro kann das Problem schon gelöst werden:
Sub zeilenUNDspaltenAUSBLENDEN()
Dim iEnd As Integer ’ ist die Zeile
Dim i As Integer ’ Laufvariable
Dim a As Integer

a = 1 ’ Spalte A
iEnd = 1 ’ Relevanter Bereich in Sheet beginnt -> Zeilennummer

Do Until Cells(iEnd, a).Value = „[Inhalt1]“
iEnd = iEnd + 1
Loop

iEnd2 = iEnd ’ Relevanter bereicht in Sheet endet
’ -> Zeilennummer finden ab Inhalt1

Do Until Cells(iEnd2, a).Value = „[Folgeinhalt]“ ’ Folgeinhalt als Abschnittsende
iEnd2 = iEnd2 + 1
Loop

For i = 2 To iEnd - 1 ’ erste Zeile stehen lassen, Buttons weiterhin sichtbar
Cells(i, 1).EntireRow.Hidden = True
Next i ’ Zeilen ausblenden

For i = iEnd2 To 12222 'ERSTE LEERE ZEILE finden, Nummer in Variable schreiben
Cells(i, 1).EntireRow.Hidden = True
Next i

’ Spalten ausblenden

For i = 2 To 200
’ 150: Die Nummer der letzten Spalte, die durchsucht
’ werden und aus/eingeblendet werden soll
’ 2: So bleibt die erste Spalte erhalten
Select Case Cells(iEnd + 1, i).Value
Case „Spalteninhalt1“
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt2"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt3"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt4"
Cells(iEnd, i).EntireColumn.Hidden = False
Case Else
Cells(iEnd, i).EntireColumn.Hidden = True
End Select
Next i

End Sub

DIese Lösung birgt für mich die Schwierigkeit, dass ich die Daten ( eingeblendet, Rest irrelevant und ausgeblendet ) nicht mit einem Makro in eine Grafik verarbeiten kann - die relevanten Spalten sind haben keine feste Nummer… Ich weiss nicht wie ich die Spalten in Variablen verarbeiten kann, bzw. meine versuche scheitern. Ich hoffe ich habe es verständlich beschrieben =)))

joh an nes . lec h elt @ web de ist die adresse. leerzeiche wegmachen =)

Hier eine bessre Erklärung was gefordert ist:

Es liegt eine große Tabelle mit versuchsdaten vor: 12000 Zeilen lang und breit bis zur Spalte „EK“.

In der „Mitte“ der Tabelle [Zeile XXX und drunter, die Zeile XXX ist der „schwimmende Bereich“, es kann je nach Prüfstand und Versuchszyklus auch mal 106, 112, 189 oder andere Werte annehmen]

Der relevante Bereich erstreckt sich also im Zeilenbereich von XXX (variabel!) bis [XXX+10000]. In diesem Bereich sind Hunderete von Spalten mit Messdaten. Drei dieser Spalten sind für die konkrete Auswertung interessant. Die Übersriften dieser Spalten sind bekannt: Ü1, Ü2, Ü3.

SO sieht die Tabelle aus:

ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant
ZEILE nicht relevant

ZEILE nicht relevant

ZEILE relevant
Daten _ _ _ Ü1 _ _ Ü2 _ _ Ü3_ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Daten _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

ZEILE nicht relevant
ZEILE nicht relevant

und SO möchte ich die Tabelle sehen:

ZEILE relevant
Daten Ü1 Ü2 Ü3
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:
Daten _ _ _ _:

Mit folgendem Makro kann das Problem schon gelöst werden:
Sub zeilenUNDspaltenAUSBLENDEN()
Dim iEnd As Integer ’ ist die Zeile
Dim i As Integer ’ Laufvariable
Dim a As Integer

a = 1 ’ Spalte A
iEnd = 1 ’ Relevanter Bereich in Sheet beginnt -> Zeilennummer

Do Until Cells(iEnd, a).Value = „[Inhalt1]“
iEnd = iEnd + 1
Loop

iEnd2 = iEnd ’ Relevanter bereicht in Sheet endet
’ -> Zeilennummer finden ab Inhalt1

Do Until Cells(iEnd2, a).Value = „[Folgeinhalt]“ ’ Folgeinhalt als Abschnittsende
iEnd2 = iEnd2 + 1
Loop

For i = 2 To iEnd - 1 ’ erste Zeile stehen lassen, Buttons weiterhin sichtbar
Cells(i, 1).EntireRow.Hidden = True
Next i ’ Zeilen ausblenden

For i = iEnd2 To 12222 'ERSTE LEERE ZEILE finden, Nummer in Variable schreiben
Cells(i, 1).EntireRow.Hidden = True
Next i

’ Spalten ausblenden

For i = 2 To 200
’ 150: Die Nummer der letzten Spalte, die durchsucht
’ werden und aus/eingeblendet werden soll
’ 2: So bleibt die erste Spalte erhalten
Select Case Cells(iEnd + 1, i).Value
Case „Spalteninhalt1“
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt2"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt3"
Cells(iEnd, i).EntireColumn.Hidden = False
Case " Spalteninhalt4"
Cells(iEnd, i).EntireColumn.Hidden = False
Case Else
Cells(iEnd, i).EntireColumn.Hidden = True
End Select
Next i

End Sub

DIese Lösung birgt für mich die Schwierigkeit, dass ich die Daten ( eingeblendet, Rest irrelevant und ausgeblendet ) nicht mit einem Makro in eine Grafik verarbeiten kann - die relevanten Spalten sind haben keine feste Nummer… Ich weiss nicht wie ich die Spalten in Variablen verarbeiten kann, bzw. meine versuche scheitern. Ich hoffe ich habe es verständlich beschrieben =)))

mit voreinstellung von „[inhalt1]“ in der abfrage:

Sub x()
Dim spalte1 As Range, spalte2 As Range, spalte3 As Range, _
zeilen As Range, loeschen As Range, _
von As Long, bis As Long

With Sheets(1).UsedRange
Set spalte1 = .Find("[inhalt1]", , , xlByRows)
Set spalte2 = .Find("[inhalt2]", spalte1, , xlByRows)
Set spalte3 = .Find("[inhalt3]", spalte2, , xlByRows)
Set zeilen = Application.InputBox(„Zeilen wählen“, _
Type:=8, Default:=spalte1.Address).EntireRow

Application.ScreenUpdating = False
Set loeschen = Range(Range(„A:A“), spalte1.Offset(, -1)).EntireColumn

If spalte2.Column - spalte1.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte1.Offset(, 1), spalte2.Offset(, -1)).EntireColumn)

If spalte3.Column - spalte2.Column > 1 Then _
Set loeschen = Union(loeschen, _
Range(spalte2.Offset(, 1), spalte3.Offset(, -1)).EntireColumn)

bis = .Column + .Columns.Count - 1
Set loeschen = Union(loeschen, _
Range(spalte3.Offset(, 1), Cells(1, bis).EntireColumn))

loeschen.Delete

von = zeilen.Row + zeilen.Rows.Count
bis = .Row + .Rows.Count
Union(Range(Cells(1, 1), Cells(zeilen.Row - 1, 1)).EntireRow, _
Range(Cells(von, 1), Cells(bis - 1, 1)).EntireRow).Delete
Cells(1, 1).Activate

Application.ScreenUpdating = True
End With
End Sub

Hi,

ich habe Die eine Mail mit einem Lösungsvorschlag von meinem privaten mailAccount ([email protected]) geschickt. Vielleicht hilft es Dir ja.
Gruß,
Jochen

Hallo fotomustang,

entschuldigen Sie, dass ich nachgefragt habe und herzlichen Dank dass Sie sich die Mühe gemacht haben den Sachverhalt zu erklären.
Aber diese Problemstellung ist etwas für einen Experten in VBA und nicht für einen Anfänger wie mich. Da kann ich leider nicht helfen.

Gruß Hugo

übrigens: du kannst das makro in eine leere arbeitsmappe speichern, z.b. makro.xls. wenn du dann zuerst makro.xls öffnest, dann die datei mit den daten (?.xls), dann dort irgendeine zelle anclickst, und schließlich das makro aufrufst, dann arbeitet das makro in der tabelle mit den daten.