Wie kann die VBA-Formel angepasst werden, sodass alle Mitarbeiter in die Zieltabelle übertragen werden?

Antwort

Hier ist die überarbeitete Version des Makros, die **jeden Mitarbeiter** aus dem Bereich C9:C66 der Quell-Tabelle ("Personen einzelnd drucken") in die Ziel-Tabelle ("Arbeitsplan") überträgt – unabhängig davon, ob der Name bereits in der Ziel-Tabelle steht. Für jeden gefundenen Namen wird die entsprechende Zeile im "Arbeitsplan" gesucht und die Werte werden übertragen. Falls der Name nicht gefunden wird, wird er übersprungen. ```vba Sub uebertragAllePersonen() Dim wb As Workbook Dim wsQuell As Worksheet, wsZiel As Worksheet Dim datumToFind As Variant, rGef As Range Dim nameQuell As Variant Dim zielStartCol As Long, zielCol As Long, quelleCol As Long Dim i As Long, j As Long Dim nameGefunden As Boolean Set wb = ThisWorkbook Set wsQuell = wb.Sheets("Personen einzelnd drucken") Set wsZiel = wb.Sheets("Arbeitsplan") ' Datum aus Spalte B8 der Quell-Tabelle als Zahl If IsDate(wsQuell.Range("B8").Value) Then datumToFind = CLng(wsQuell.Range("B8").Value) Else MsgBox "Datum in Personen einzeln drucken!B8 ist ungültig oder leer.", vbExclamation Exit Sub End If zielStartCol = 4 ' Spalte D ' Jetzt alle Namen in C9:C66 durchgehen For i = 9 To 66 nameQuell = wsQuell.Cells(i, 3).Value ' Spalte C If Not IsEmpty(nameQuell) Then nameGefunden = False ' In Arbeitsplan Spalte A nach Datum suchen For Each rGef In wsZiel.Columns("A").Cells If IsDate(rGef.Value) Then If CLng(rGef.Value) = datumToFind Then ' Prüfen, ob Name in Spalte B übereinstimmt If wsZiel.Cells(rGef.Row, "B").Value = nameQuell Then ' Kopiere Werte von Arbeitsplan F bis BA in die Zielspalten ab Spalte D der aktuellen Zeile For zielCol = 6 To 54 ' F(6) bis BA(54) wsQuell.Cells(i, zielStartCol + (zielCol - 6)).Value = wsZiel.Cells(rGef.Row, zielCol).Value Next zielCol nameGefunden = True Exit For End If End If End If If rGef.Row > 1000 Then Exit For ' Optional: Suchbereich begrenzen Next rGef ' Optional: Hinweis, wenn Name nicht gefunden wurde 'If Not nameGefunden Then ' wsQuell.Cells(i, zielStartCol).Value = "Name nicht gefunden" 'End If End If Next i MsgBox "Datenübertragung abgeschlossen.", vbInformation End Sub ``` **Hinweise:** - Das Makro sucht für **jeden** Namen aus C9:C66 das passende Datum und den Namen in der Ziel-Tabelle und überträgt die Werte. - Falls ein Name nicht gefunden wird, passiert nichts (optional kann ein Hinweis in die Quell-Tabelle geschrieben werden, siehe Kommentar). - Die Übertragung erfolgt immer in die Zeile des jeweiligen Mitarbeiters in der Quell-Tabelle. Falls du möchtest, dass auch neue Mitarbeiter in die Ziel-Tabelle eingefügt werden, müsste das Makro entsprechend erweitert werden.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie lautet der VBA-Code, um aus Excel eine E-Mail zu erstellen mit einem Empfänger im BCC?

Um in Excel mit VBA eine E-Mail zu erstellen, bei der der Empfänger im BCC steht, kannst du folgenden Code verwenden: ```vba Sub SendEmailWithBCC() Dim OutlookApp As Object Dim OutlookMa... [mehr]

Kann ich mit Access und VBA die SUBSTITUTE-Funktion in Excel ausführen?

Ja, du kannst die SUBSTITUTE-Funktion in Excel auch über VBA (Visual Basic for Applications) in verwenden. Dazu kannst du die Excel-Objektbibliothek in dein Access-Projekt einbinden und die Funkt... [mehr]

xlwings mehrere Excel-Dateien aus einem Ordner zusammenfügen

Um mehrere Excel-Dateien aus einem Ordner mit xlwings zusammenzuführen, kannst du folgendes Python-S verwenden. Dieses Skript öffnet alle Excel-Dateien in einem angegebenen Ordner und fü... [mehr]

Wie können mehrere Spalten verschiedener Excel-Dateien mit xlwings zusammengefügt werden?

Um mehrere Spalten aus verschiedenen Excel-Dateien mit xlwings zusammenzuführen, kannst du die folgenden Schritte befolgen: 1. **Installation von xlwings**: Stelle sicher, dass xlwings installie... [mehr]

VBA: Tabelle prüfen, ob Spalte 3 Werte stehen. Sobald Spalte 3 leer ist, Wert der Spalte 1 kopieren bis zum letzten Wert in Spalte 1.

Um in VBA zu überprüfen, ob in Spalte 3 Werte stehen und bei einer leeren Zelle in Spalte 3 den Wert aus Spalte 1 zu kopieren, kannst du den folgenden Code verwenden. Dieser Code durchlä... [mehr]

Welche Logik steckt hinter VBA?

Die Logik hinter VBA (Visual Basic for Applications) basiert der Programmiersprache Visual Basic, die speziell für die Automatisierung von Aufgaben in Microsoft-Anwendungen wie Excel, Word und Ac... [mehr]

Welche Excel-Bibliothek benutzt Symfony?

Symfony verwendet in der Regel die PHPExcel-Bibliothek oder deren Nachfolger, PhpSpreadsheet, um mit Excel-Dateien zu arbeiten. PhpSpreadsheet ist eine moderne und aktiv gewartete Bibliothek, die eine... [mehr]

Wie beende ich alle Excel-Tasks in C#?

Um alle Excel-Tasks in C# zu beenden, kannst du die `System.Diagnostics`-Namespace verwenden, um alle Prozesse mit dem Namen "EXCEL" zu beenden. Hier ist ein einfaches Beispiel, wie du das u... [mehr]

Was macht GeckoDriverManager aus webdriver_manager.firefox?

Der Befehl `from webdriver_manager.firefox import GeckoDriverManager` importiert die Klasse `GeckoDriverManager` aus dem Modul `webdriver_manager.firefox`. Diese Klasse wird verwendet, um den GeckoDri... [mehr]

Volumen der Kugel in VBA?

Das Volumen einer Kugel kann mit der Formel \( V = \frac{4}{3} \pi r^3 \) berechnet werden, wobei \( r \) der Radius der Kugel ist. In VBA (Visual Basic for Applications) kannst eine Funktion erstelle... [mehr]