Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel - Zeichen suchen und Text bis dahin kopieren

Frage Entwicklung VB for Applications

Mitglied: Paescu

Paescu (Level 1) - Jetzt verbinden

14.08.2006, aktualisiert 28.08.2006, 41251 Aufrufe, 19 Kommentare

Hallo zusammen

wieder einmal eine weitere Frage von mir
Diesmal geht es um Excel und VBA. Ich habe einen Auftrag, bei dem ich unter Anderem in einer Zelle ein Raute-Zeichen oder einen Abstand (je nachdem) suchen muss, den Text vor diesem Zeichen in ein Array und den Text danach in ein anderes Array speichern muss.
Nur habe ich keine Ahnung, wie das geht und irgendwie muss es ja gehen... Wäre sehr froh über eine baldige Antwort...
Mitglied: 8644
14.08.2006 um 14:47 Uhr
Hi,

A1: 123asc#as232

Für den Text vor der Raute:
=LINKS(A1;FINDEN("#";A1)-1)

Für den Text nach der Raute:
=RECHTS(A1;LÄNGE(A1)-FINDEN("#";A1))

Psycho
Bitte warten ..
Mitglied: Paescu
14.08.2006 um 15:29 Uhr
Danke für deine Antwort. Es funktioniert zwar, aber habe mich ein bisschen unklar ausgedrückt... Ich sollte dies per VBA tun können, nicht direkt mit ner Formel... Makro aufzeichnen bringt nichts...

Pascal
Bitte warten ..
Mitglied: 8644
14.08.2006 um 15:31 Uhr
Hi,

ja, das mit dem unklar Ausdrücken ist ein Problem
Was soll denn am Ende mit den entstandenen Werten passieren?

Psycho
Bitte warten ..
Mitglied: Paescu
14.08.2006 um 15:34 Uhr
Ich möchte diese Werte in ein Array speichern und danach in einem neuen Dokument einfügen...
Bitte warten ..
Mitglied: 8644
14.08.2006 um 15:47 Uhr
Erstmal zur Erklärung: Eine Zeichenkette (String) ist bereits ein Array, welches aus einzelnen Zeichen besteht, welche über ihren Index angesprochen werden können:
Bsp.
Mein_Feld = "Psycho Dad"
Ein_Zeichen = Mein_Feld(3)

Ein_Zeichen ==> "y"

Und nun zu dir: Ich bin mir sicher, dir helfen zu können. Dazu sind dann aber doch genauere Angaben nötig. In welcher (welchen) Zellen stehen die zu analysierenden Daten?
In was für ein Dokument sollen die "Zieldaten" gespeichert werden. Wenn es sich hier auch um eine Excel-Tabelle handelt, geht es auch ohne Makro.
Beschreib dein Vorhaben mal etwas genauer!

Psycho

P.S. Klingt ja ganz schön Oberlehrermäßig -> Sorry 8-)
Bitte warten ..
Mitglied: Paescu
14.08.2006 um 16:18 Uhr
Aaalso mein Auftrag etwas genauer: Ich habe eine ziemlich umfangreiche Tabelle von einer Mitarbeiterin bekommen. Diese will nun, dass ich Daten aus vier verschiedenen Registern in ein neu erstelltes Dokument schreibe. Im ersten Register, das bearbeitet werden muss, ist in Zelle A2 die Anzahl (geht um Bestellungen). Nebenan in der Zelle B2 ist dann eine Part-Nummer. Diese besteht aus ein paar Zeichen, einem Raute-Zeichen oder einem Leerschlag und dann wieder ein paar Zeichen, also z.B. so: U5466S#4NK
Nun muss ich alle "vollen" Zellen in diesem Register durchgehen (mit "alle" meine ich alle Zellen in den Spalten A und B) und diese will ich in ein Array speichern. Mit der Anzahl ist das kein Problem, geht super. Jedoch möchte die Mitarbeiterin, dass die Part-Nummer in Spalte B in eine Artikel-Nummer und eine Option-Nummer aufgeteilt wird. Der Teil vor dem Raute-Zeichen soll Artikel-Nummer sein, der Teil danach Option-Nummer. Die Nummern sind immer unterschiedlich lang, kann also nicht immer die gleiche Anzahl stellen bis zum Raute-Zeichen nehmen... Ich möchte dann von jedem Artikel die Artikel-Nummer und die Option-Nummer in das Array speichern. Wenn alles durch ist, muss das nächste benötigte Register angewählt werden und dasselbe Spiel nochmal, einfach in ein anderes Array. Wenn dann alle vier Register durch sind, wird ein neues Dokument erzeugt, wo dann die Anzahl, Artikel-Nummer und Option-Nummer eingetragen wird...

Ui, jetzt habe ich aber genug geschrieben :-P Hoffe jetzt genügend Auskunft gegeben zu haben und wenn nicht, dann einfach nachfrage

Gruss Pascal

edit: Habe noch vergessen zu sagen, dass das Raute-Zeichen oder der Leerschlag wegfallen kann.
Bitte warten ..
Mitglied: 8644
14.08.2006 um 19:43 Uhr
Hi,

also wenn das so ist, würde ich folgende Variante wählen:

Du benutzt die beiden Formeln und kopierst sie nach unten.
Dann markierst du die Ergebnisse und kopierst sie in die Zwischenablage.
Nun öffnest du das neue Dokument und gehst über das Menü Bearbeiten -> Inhalte einfügen -> Werte.
Das geht meiner Meinung nach am schnellsten.

Psycho
Bitte warten ..
Mitglied: Paescu
15.08.2006 um 08:21 Uhr
Das wäre natürlich schon ne Variante, aber kann ich dann einfach vom einen zum anderen Dokument wechseln? Denn wenn ich das so mache, muss ich ja nach jedem Register die Daten in das neue Dokument schreiben... Geht das so eifach?

Pascal
Bitte warten ..
Mitglied: 8644
15.08.2006 um 08:27 Uhr
Moin,

klar geht das. Du öffnest beide Dokumente und wechselst über das Menü Fenster hin und her.

Psycho
Bitte warten ..
Mitglied: Paescu
15.08.2006 um 08:47 Uhr
Ich meine alles automatisch... Es soll am Ende eine Arbeitserleichterung für die Mitarbeiterin werden...
Bitte warten ..
Mitglied: 8644
15.08.2006 um 09:00 Uhr
Moin,

theoretisch geht alles! Aber was du jetzt möchtest, geht schon weit über das hinaus, was ich unter einen Tipp im Forum geben verstehe! Sollte ich etwas Zeit und meine soziale Ader finden, lässt sich da vielleicht was machen.

Psycho
Bitte warten ..
Mitglied: Paescu
15.08.2006 um 09:23 Uhr
Nun, da kann man nichts machen
Möchte mich ausserdem noch bedanken, dass du mir diese Tipps überhaupt gegeben hast.

Des Weiteren komme ich der Lösung immer näher, hoffe, ich habe es bald einmal...

Pascal
Bitte warten ..
Mitglied: Paescu
21.08.2006 um 10:32 Uhr
So, habe es geschafft, dass es getrennt wird, nun muss ich das nur noch automatisieren und alles in ein Array und nicht in ne Zelle schreiben...

Meine Lösung sieht so aus:
01.
  Do Until Cells(1, 1).Characters(i, 1).Text = "#" 
02.
    Cells(2, 1) = CStr(Cells(2, 1)) + Cells(1, 1).Characters(i, 1).Text 
03.
    i = i + 1 
04.
    links = links + 1 
05.
  Loop 
06.
   
07.
  For links = links To Cells(1, 1).Characters.Count 
08.
    Cells(3, 1) = CStr(Cells(3, 1)) + Cells(1, 1).Characters(links, 1).Text 
09.
  Next
Hat vielleicht jemand noch Verbessernungsvorschläge oder so etwas?
Bitte warten ..
Mitglied: Biber
21.08.2006 um 12:09 Uhr
Moin Päscu,
VB ist ja nicht gerade mein Fachgebiet,...
Aber ein erstes Zusammendampfen Deines Ansatzes ergibt diesen Basis-Schnipsel:
01.
Sub SubstringGeraffel() 
02.
Const ROWMAX = 5000 
03.
Dim i, nRow As Long 
04.
 
05.
For nRow = 1 To ROWMAX 
06.
  i = InStr(1, Cells(nRow, 1), "#") 
07.
  If i > 0 Then 
08.
     Cells(nRow, 2) = Mid(Cells(nRow, 1), 1, i - 1) 
09.
     Cells(nRow, 3) = Mid(Cells(nRow, 1), i + 1) 
10.
   End If 
11.
Next 
12.
End Sub
Wenn also in der ersten Spalte diese Strings a la "U5466S#4NK" stehen, werden in die zwei Spalten rechts daneben "U5466S" und "4NK" geschrieben.
Und zwar ROWMAX = 5000x.

Hope that Helps
Biber
Bitte warten ..
Mitglied: Paescu
23.08.2006 um 09:05 Uhr
danke, auch nicht n schlechter Ansatz... *-) Es funktioniert nun mit meinem Ansatz auch, aber irgendwie finde ich, deiner sieht besser aus und ist eigentlich auch nich so kompliziert... mal schauen, was ich noch machen werde.

Pascal
Bitte warten ..
Mitglied: miniversum
24.08.2006 um 13:30 Uhr
Nur als Tip:
Schau dir mal in der Hilfe von vba die Split-Funktion an. Ist das das was Du suchst?

miniversum
Bitte warten ..
Mitglied: Paescu
28.08.2006 um 10:04 Uhr
@miniversum

Funktioniert die Split-Funktion auch mit zweidimensionalen Arrays? Habe nur was mit eindimensionalen Arrays gefunden in der Hilfe...

Pascal
Bitte warten ..
Mitglied: miniversum
28.08.2006 um 19:30 Uhr
Die Split Funktion liefert die doch die zwei Zeichenfolgen in Variablen. Wo die dann "hingeschoben" werden ist ja egal.

miniversum
Bitte warten ..
Mitglied: Paescu
28.08.2006 um 19:40 Uhr
Hmm... *-) hat was, dann muss ich einfach noch diese Variabeln dem Array zuweisen... So weit habe ich gar noch nicht gedacht... Habe meine alte, 15-zeilige Version beibehalten
Ich habe einfach probiert, diese zwei Strings direkt in das zweidimensionale Array zu speichern, aber mit der Split-Funktion ist da nichts zu machen... Werde es mit Variabeln probieren, morgen dann
Danke noch für den Tipp

Pascal
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Excel 2010 - Microsoft Excel kann die Daten nicht kopieren (4)

Frage von EDV-Oellerking zum Thema Microsoft Office ...

Batch & Shell
gelöst XML-Datei: Pfade suchen, verlinkte Dateien kopieren und Pfade ändern (4)

Frage von ELEVATOR zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...