Excel nach bestimmten Schema durchlaufen und Daten kopieren

Mitglied: Pat.bat

Pat.bat (Level 1) - Jetzt verbinden

13.08.2019 um 10:45 Uhr, 1233 Aufrufe, 15 Kommentare, 1 Danke

Hallo zusammen,

Ich habe eine Excel Datei, die wie ungefähr so aufgebaut ist:

excelauslesen - Klicke auf das Bild, um es zu vergrößern

Dabei stellt die Range zwischen Start und Ende immer einen Datensatz da, den ich so in ein neues Excel Dokument kopieren möchte.
Bei Start steht immer der Name der jeweiligen Einrichtung.
Daran soll erkannt werden, welche Datenblöcke mit ins neue Excel Dokument kopiert werden.

Diese rohe Excel Datei besteht aus einer "Liste" von Einrichtungsblöcken, wobei dich diese nun in jeweils eigene Dateien kopieren möchte.

Dabei ist die Datei so Aufgebaut, das am Start des Blocks der Name der Einrichung steht und am Ende des Blocks immer Die Summe der Kosten.
Danach folgen immer 7 Zeilen die unwichtig sind bevor der nächste Block startet.

Der Prozess wird aus einer VB.Net Application angestoßen. Wobei ich mir vorstellen kann, das die Verarbeitung der Daten in Excel mit VBA vorgenommen werden könnte (Einfacher als es in VB.Net zu schreiben???)

Unter anderem bin ich mir jetzt noch sicher wie man diese Aufgabe am besten angeht.

Ich könnte jetzt sagen (Pseudocode):

Wäre das ein Weg den man gehen könnte, oder gibt es da effizientere Wege?

Kann man das genauso gut in VB.net machen oder macht sich sowas in VBA etwas komfortabler (obwohl sich beide ja ziemlich gleich sind)?

Weitere Infos: Die Excel Datei wird aus einem externen Programm heraus generiert. In meiner VB.Net Application würde ich diese generierte Datei auswählen und auf einen Button "Listen erstellen" drücken, der dann den Prozess ausführt.
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 12:44 Uhr
Wat für dich zum fertsch machen (Speicherung der erzeugten Mappen unter deinen gewünschten Dateinamen kannst du ja hoffentlich noch selbst ergänzen ;-) face-wink)
Bitte warten ..
Mitglied: Pat.bat
13.08.2019 um 15:22 Uhr
Wow super, das ist schonmal eine große Hilfe.

Da die Zelle B15 mehr enthält als nur den Namen der Einrichtung (unter anderem auch die Adresse), habe ich definition von result so abgeändert:

wobei der xlPart Teil eigentlich ja wie "Text.Contains" funktionieren sollte. Allerdings findet er bei mir nichts.

Die Zelle sieht unter anderem so aus:

Funktioniert das dort anders mit xlPart oder warum findet er nicht den Eintrag in der Zelle?
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 15:34 Uhr
Weil im Beispiel-Code oben nur Spalte A ab Zeile 15 - Ende durchsucht wird
Bitte warten ..
Mitglied: Pat.bat
13.08.2019 um 15:53 Uhr
Zitat von 140777:

Weil im Beispiel-Code oben nur Spalte A ab Zeile 15 - Ende durchsucht wird

Sorry, hatte vergessen den Code darüber zu posten:

So hab ich es stehen und er findet nichts.
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 15:57 Uhr
Die Zelle ist verbunden oder passe mal den MatchCase an, kommt der Inhalt aus einer Formel?
Bitte warten ..
Mitglied: Pat.bat
13.08.2019, aktualisiert um 16:00 Uhr
Zitat von 140777:

Die Zelle ist verbunden oder passe mal den MatchCase an, kommt der Inhalt aus einer Formel?

genau die Zelle ist verbunden und hat einen Textumbruch drin.

Der Inhalt steht as Value drin, also nicht per Formel
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 16:11 Uhr
Zitat von Pat.bat:
genau die Zelle ist verbunden und hat einen Textumbruch drin.
Da hast du deinen Grund, darin findet der nichts wenn man den Suchbereich nicht auf alle Spalten der Verbundenen ausweitet. Deswegen habe ich nach der eindeutigen Spaltenbeschriftung "Fallnummer" gesucht und dann die Zelle eins nach oben geschoben ;-) face-wink, eine Adresse oder Name kann sich ja ändern.
Du kannst auch einen anderen festen Bezug nehmen und dann einen anderen Offset davon definieren.
Bitte warten ..
Mitglied: Pat.bat
13.08.2019, aktualisiert um 16:17 Uhr
Zitat von 140777:

Zitat von Pat.bat:
genau die Zelle ist verbunden und hat einen Textumbruch drin.
Da hast du deinen Grund, darin findet der nichts wenn man den Suchbereich nicht auf alle Spalten der Verbundenen ausweitet. Deswegen habe ich nach der eindeutigen Spaltenbeschriftung "Fallnummer" gesucht und dann die Zelle eins nach oben geschoben ;-) face-wink, eine Adresse oder Name kann sich ja ändern.


Mit Fallname findet er trotzdem nichts.

Aber wenn ich nach Fallname suche und sage er soll eine Zelle hoch rutschen und ab da an bis Summe alles kopieren, woher weiss er dann den Einrichtungsnamen und kann damit eine neue Tabelle erstellen?

Zum Hintergrund:

Eine Einrichtung hat einen Namen, wie hier zb. "ANKER Sozialarbeit Gemeinnützige GmbH".
Eine Einrichtung kann aber mehrere Standorte haben. D.h. alle Blöcke mit dem Namen der Einrichtung unabhängig von der Adresse sollen in eine neue Tabelle kopiert werden.

Daher meine Überlegung, die Zelle B15 mit einer Art Contains zu überprüfen. Der Name der jeweiligen Einrichtung ist immer gleich, aber die Adresse kann unterschiedlich sein.

Nachtrag:

Achso jetzt weiß ich was du bezwecken wolltest. Er zieht sich also die Zelle über Fallname und nimmt diese als Anhaltspunkt weitere Blöcke zu finden, die mit dem selben Wert anfangen.

Nur gibt es wie gesagt, 2 Probleme. Auch mit Fallname findet er nichts und der Name ist gleich, nur die Adresse ist unterschiedlich.
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 16:19 Uhr
Zitat von Pat.bat:
Mit Fallname findet er trotzdem nichts.
Dann ist die wohl auch verbunden. Funktioniert hier testweise einwandfrei, ohne Quelldaten vorliegen zu haben kann man ja leider nur raten.
Aber wenn ich nach Fallname suche und sage er soll eine Zelle hoch rutschen und ab da an bis Summe alles kopieren, woher weiss er dann den Einrichtungsnamen und kann damit eine neue Tabelle erstellen?
Mit entsprechendem Offset kein Problem
Wenn hier so viel mit Zellverbunden gearbeitet wird wirst du wohl doch auf eine Schleife ausweichen müssen außer du findest noch ein Merkmal jedes Datensatzes in dieser oder einer anderen Spalte anhand dessen man über einen Offset die Anfangszelle bestimmen kann.
Bitte warten ..
Mitglied: Pat.bat
13.08.2019 um 16:29 Uhr
Zitat von 140777:

Zitat von Pat.bat:
Mit Fallname findet er trotzdem nichts.
Dann ist die wohl auch verbunden. Funktioniert hier testweise einwandfrei, ohne Quelldaten vorliegen zu haben kann man ja leider nur raten.
Aber wenn ich nach Fallname suche und sage er soll eine Zelle hoch rutschen und ab da an bis Summe alles kopieren, woher weiss er dann den Einrichtungsnamen und kann damit eine neue Tabelle erstellen?
Mit entsprechendem Offset kein Problem
Wenn hier so viel mit Zellverbunden gearbeitet wird wirst du wohl doch auf eine Schleife ausweichen müssen außer du findest noch ein Merkmal jedes Datensatzes in dieser oder einer anderen Spalte anhand dessen man über einen Offset die Anfangszelle bestimmen kann.

es gibt da noch Spalte N wo das Wort betrag steht. Die Zelle ist nicht verbunden, aber als Textumbruch eingestellt.

Dort habe ich den Code dann wie folgt abgeändert, aber scheint in eine Endlosschleife zu laufen:

Der Name der Einrichtung befindet sich in Zelle B15 (Verbunden und Textumbruch)
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
LÖSUNG 13.08.2019, aktualisiert um 17:05 Uhr
Geht so auch nicht.
Wie gesagt mach's mit einfacher Schleife über eine Spalte oder löse den Verbund der Zellen temporär im Code für die Suche. Ohne das Quell-Sheet leider immer noch Glaskugel.

Bitte warten ..
Mitglied: Pat.bat
13.08.2019 um 16:59 Uhr
Hallo,

ich habe die Datei mal soweit es geht anonymisiert

Testexcel.xlsx

Mit folgendem Stück code bekomme ich zumindest nun die richtigen Zellen:

Allerdings gibts eine Exception nach dem ersten While durchlauf:

exc - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
13.08.2019, aktualisiert um 17:07 Uhr
Hatte den angepassten Code für die Sub nachträglich im letzten Kommentar gepostet, damit funktioniert es hier im Test mit deiner bereitgestellten Datei (Danke!).
Bitte warten ..
Mitglied: Pat.bat
14.08.2019 um 15:16 Uhr
Zitat von 140777:

Hatte den angepassten Code für die Sub nachträglich im letzten Kommentar gepostet, damit funktioniert es hier im Test mit deiner bereitgestellten Datei (Danke!).

Danke, mit folgenden Änderungen funktioniert es nun perfekt in der VB App:

Jetzt hab ich noch die Aufgabe bekommen, das ganze in PowerShell zu schreiben, damit dieses Stück Code auch als Teil eines Batches ausgeführt werden kann (Windows Aufgabenplanung). Puh, jetzt muss ich erstmal schauen wie man sowas in PowerShell macht.

Trotzdem vielen Dank für die super Hilfe hier :) face-smile
Bitte warten ..
Mitglied: 140777
140777 (Level 1)
14.08.2019, aktualisiert um 15:20 Uhr
Joa, nützt nur keinem was wenn er nicht den gleichen Aufbau hat ...
wie man sowas in PowerShell macht.
Genau so :-) face-smile.
In Powershell kannst du ebenfalls auf das COM-Objekt zugreifen, oder gleich den ganzen VB.Net Code über Add-Type ausführen.
Bitte warten ..
Heiß diskutierte Inhalte
Wünsch Dir was
Das ist ja nicht auszuhalten, dass ich für jeden googlen soll
NordicMikeVor 19 StundenAllgemeinWünsch Dir was22 Kommentare

Ich beantrage, dass bei jeder Beitragserstellung eine Checkbox angeklickt werden muss, mit dem Text: Ja, ich habe bereits danach gegoogelt. Ansonsten soll der "Senden" ...

Rechtliche Fragen
Adobe Flash erneut aktivieren, IT-Sicherheit + Datenschutz
anteNopeVor 1 TagFrageRechtliche Fragen14 Kommentare

Hallo zusammen, ich weiß es ist noch nicht Freitag aber mir ist hier gerade die Kinnlade bis in den Keller gefallen. Opel (ja der ...

Windows 10
Wie kann ich mehrere PCs gleich aufsetzten (mit User)
dressaVor 1 TagFrageWindows 1010 Kommentare

Hallo miteinander. Wie kann ich mehrere PCs (über 200) gleich aufsetzten. Ich habe etwa 4 Modele die sich nur von der Baugeneration unterscheiden. Also ...

Flatrates
Mobilfunktarife für die Firma (günstig)
gelöst ingo1988Vor 1 TagFrageFlatrates13 Kommentare

Hallo, kann mir jemand weiterhelfen im Bezug auf Mobilfunktarife für Unternehmen? Ich suche nämlich günstige Angebote im Telekom oder Vodafone Netz, ähnlich wie Lidl ...

Microsoft
Wie verteilt Ihr Software im AD auf die Clients? GPO?
Der-PhilVor 1 TagFrageMicrosoft14 Kommentare

Hallo! Die Kernfrage steht eigentlich schon im Titel: Wie verteilt ihr Software und haltet sie aktuell auf den Clients? Bislang mache ich das alles ...

Hardware
Homelab - Gebrauchte Server Hardware?
gelöst kernl33Vor 22 StundenFrageHardware16 Kommentare

Hallo zusammen, ich plane mir für mein Homelab einen 19 Zoll Server (2-4HE) anzulegen, es soll ein Hypervisor mit diversen VMs laufen. Hier zu ...

Cloud-Dienste
Server über zwei WAN Leitungen mit Load Balancing verfügbar machen
tobitobsnVor 1 TagFrageCloud-Dienste13 Kommentare

Moin zusammen, ich plane, einen Server im WAN über zwei Leitungen (Kabel und DSL) zwecks Ausfallsicherheit und Load Balancing verfügbar zu machen. Es sind ...

Festplatten, SSD, Raid
SATA Treiber für HP
ben1300Vor 14 StundenFrageFestplatten, SSD, Raid15 Kommentare

Hallo zusammen, ich habe einen PC von HP (Seriennummer: CZC3475D5D) Wollte hier Windows 7 Prof. installieren - es fehlt der SATA Treiber Leider kann ...