Microsoft Excel

Herbers Excel/VBA-Archiv

Anpassung Tabellenblatt

Betrifft: Anpassung Tabellenblatt von: Norist
Geschrieben am: 03.09.2020 12:15:44

Hallo!


Da ich gerade erst anfange, mich in VBA einzulesen, könnte ich ein wenig Hilfe gebrauchen. Da die Daten in dem Tabellenblatt vertraulich sind, kann ich das jetzt nicht einfach hier einfügen, sondern versuche es erstmal zu beschreiben.

Ich möchte gerne eine Kopie eines bestehenden Tabellenblattes auf ein neues Tabellenblatt - allerdings mit angepassten Werten der vorigen Tabelle.

Wenn bspw. "nicht erforderlich" steht, soll das Feld leer werden.

Wenn ein Datum kommt, soll daraus, je nach Spalte, ein bestimmter Wortlaut kommen.

Ganz wichtig ist aber: Wenn in einer Zeile NUR "nicht erforderlich" bzw. " " steht (also KEINE Zelle darf ein Datum o.ä. beinhalten), soll diese Zeile komplett gelöscht werden.


Das Ergebnis wäre also eine ausgedünnte neue Tabelle der Originaltabelle.


Ohne jetzt die Struktur der Tabelle zu kennen, wäre ich euch sehr dankbar, vielleicht ein paar Codeschnipsel zu bekommen, mit denen ich das umsetzen kann!


Viele Grüße

Betrifft: Crosspost ohne Hinweis
von: Werner
Geschrieben am: 03.09.2020 12:40:54

Hallo,

würdest du bitte die Beiträge in den verschiedenen Foren untereinander verlinken.

Gruß Werner

Betrifft: AW: Crosspost ohne Hinweis
von: Norist
Geschrieben am: 03.09.2020 12:57:04

Hallo Werner,

wie meinst du? Soll ich die jeweils anderen Foren in den Thread einpflegen?

Betrifft: AW: Crosspost ohne Hinweis
von: SF
Geschrieben am: 03.09.2020 13:34:49

Hola,

ja, genau das.

Gruß,
steve1da

Betrifft: AW: Crosspost ohne Hinweis
von: Norist
Geschrieben am: 03.09.2020 13:37:12

Verweis auf anderes Forum:
https://www.vba-forum.de/View.aspx?ziel=61528-Anpassung_Tabellenblatt

Betrifft: AW: Anpassung Tabellenblatt
von: Sebastian Röpke
Geschrieben am: 03.09.2020 14:30:08

Hier folgend mal ein Muster, wie die Tabelle aussieht.

https://www.herber.de/bbs/user/140020.xlsx

Betrifft: AW: Anpassung Tabellenblatt
von: Werner
Geschrieben am: 03.09.2020 19:32:09

Hallo,

warum neuer Name?
Teste mal:
Sub Schaltfläche1_Klicken()
Dim i As Long, raWeg As Range

Application.ScreenUpdating = False

Worksheets("Tabelle1").Range("A1").CurrentRegion.Copy _
Worksheets("Tabelle2").Range("A1")
With Worksheets("Tabelle2")
    .Columns("A:K").AutoFit
    .Columns("C:K").Replace "nicht erforderlich", ""
    For i = 2 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
        If WorksheetFunction.CountA(.Range(.Cells(i, "C"), .Cells(i, "K"))) = 0 Then
            If raWeg Is Nothing Then
                Set raWeg = .Cells(i, "A").Resize(, 11)
            Else
                Set raWeg = Union(raWeg, .Cells(i, "A").Resize(, 11))
            End If
        End If
    Next i
    If Not raWeg Is Nothing Then
        raWeg.Delete
    End If
End With

Set raWeg = Nothing
End Sub
Gruß Werner

Betrifft: AW: Anpassung Tabellenblatt
von: Sebastian Röpke
Geschrieben am: 03.09.2020 19:48:25

Hallo Werner,

das mit dem Namen war ein Versehen, da von einem anderen Rechner aus geschrieben.
Dein Beispiel funktioniert wirklich wunderbar und ich kann damit gut weiterarbeiten!
Eine Frage hätte ich noch: Wie bringt man dem Makro per VBA bei, eine Zelle mit Datum mit einem bestimmten Text zu ersetzen?

Grüße!

Betrifft: AW: Anpassung Tabellenblatt
von: Sebastian Röpke
Geschrieben am: 04.09.2020 00:52:56

Ich hab jetzt wirklich einige Stunden lang gesucht und gebastelt und finde keinen Weg, wie das Makro bei einem Datum in Zellen der jeweiligen Spalte das Datum mit einem Text ersetzt.
Entweder er schreibt gar nichts hin oder aber in JEDE Zelle.

Bei mir scheitert es an zweierlei Art Verständnis:
1. Wie bekomme ich es hin, dass nur eine Spalte (bis zur letzten Zeile) analysiert werden soll?
2. Wie schaffe ich es, dass nur die Zellen mit einem Datum drin verändert werden?

Betrifft: AW: Anpassung Tabellenblatt
von: Werner
Geschrieben am: 04.09.2020 09:02:48

Hallo,

wenn du mal konkret werden würdest, dann könnte man auch weiter machen.

Im Eingangsbeitrag steht:
Wenn ein Datum kommt, soll daraus, je nach Spalte, ein bestimmter Wortlaut kommen.
Das heißt jetzt konkret was, bei jeder Spalte ein anderer "Text"?

Und was für ein "Text" den bitte?

Gruß Werner

Betrifft: AW: Anpassung Tabellenblatt
von: Sebastian Röpke
Geschrieben am: 04.09.2020 09:05:07

Hallo,

Okay, konkret (auf das Musterbeispiel bezogen):
Wenn in Spalte C (mit G20 als Überschrift) irgendwo ein Datum auftaucht, soll dastehen: G20-Angebot.
Spalte D (G23 Überschrift) dann bei jedem Datum G23-Angebot usw.

Grüße

Betrifft: AW: Anpassung Tabellenblatt
von: Werner
Geschrieben am: 04.09.2020 09:40:11

Hallo,

so:
Option Explicit

Sub Schaltfläche1_Klicken()
Dim i As Long, z As Long, raWeg As Range

Application.ScreenUpdating = False

Worksheets("Tabelle1").Range("A1").CurrentRegion.Copy _
Worksheets("Tabelle2").Range("A1")
With Worksheets("Tabelle2")
    .Columns("A:K").AutoFit
    .Columns("C:K").Replace "nicht erforderlich", ""
    For i = 2 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
        If WorksheetFunction.CountA(.Range(.Cells(i, "C"), .Cells(i, "K"))) = 0 Then
            If raWeg Is Nothing Then
                Set raWeg = .Cells(i, "A").Resize(, 11)
            Else
                Set raWeg = Union(raWeg, .Cells(i, "A").Resize(, 11))
            End If
        End If
    Next i
    If Not raWeg Is Nothing Then
        raWeg.Delete
    End If
    For i = 3 To 11
        For z = 2 To .Columns(i).Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, _
        searchdirection:=xlPrevious).Row
            If IsDate(.Cells(z, i)) Then .Cells(z, i) = .Cells(1, i) & "-Angabot"
        Next z
    Next i
End With

Set raWeg = Nothing
End Sub
Gruß Werner

Betrifft: AW: Anpassung Tabellenblatt
von: Sebastian Röpke
Geschrieben am: 04.09.2020 10:14:12

Hallo Werner,

das funktioniert super! Und vor allem verstehe ichs auch, weil du genau den logischen Schritt verwendet hast, der mir gefehlt hatte. Danke!

Grüße

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 04.09.2020 11:30:36



Beiträge aus dem Excel-Forum zum Thema "Anpassung Tabellenblatt"