PDA

Vollständige Version anzeigen : Suchen nach Struktur


archi01
18.07.2012, 07:07
Hallo,
leider komme ich hier nicht mehr weiter. Ich denke es müsste VBA eingesetzt werden, aber das kann ich nicht.
Problem: Ich habe Daten aus einem Terminverwaltungsprogramm nach XL exportiert. Sämtliche Daten werden in eine Spalte (A) geschrieben. Aus dieser Spalte muss ich nun die Kundennummern rausziehen. Wohin ist egal. Meinetwegen in Spalte B. Die Kundennummern haben alle die Struktur (Z=Ziffer; B=Buchstabe): ZZZBZZZZZZ

Aufgabe: XL soll nun alle Werte, die dieser Struktur entsprechen in Spalte B schreiben.

Geht das auch mit einer Formel oder nun in VBA?

Schonmal Danke für Hilfe
Gruß
Andreas

mücke
18.07.2012, 07:13
Moin Andreas,

was beinhaltet "Sämtliche Daten" und wie sehen die KundenNr. genau aus ... immer ZZZBZZZZZZ oder ist die Länge variabel?
(D)eine Beispielmappe würde da echt helfen ;)

chris-kaiser
18.07.2012, 07:14
Hi

Wie sehen die Daten konkret aus!
sind die Daten durch Strichpunkte, Beistriche Leerzeichen oder sonstwas getrennt.

Oder ist die Nummer am Anfang immer gleich lang?

Den dafür gibt es das Menü unter Daten -> Text in Spalten.

archi01
18.07.2012, 07:35
Guten Morgen ihr Fleißigen,
das ging ja schnell.
Also eine Bspmappe darf ich nicht.
Die Kundennummern haben immer die Struktur ZZZBZZZZZZ. Da gibt es keine Abweichung von.
Die Zellen direkt nach dem Export sehen zumeist so aus (das steht so komplett in einer Zelle):
10:30 Name Name ZZZBZZZZZZ (ZZZZBBZZZZZZZ) [<-Das ist eine andere Nummer die aber ignoriert werden soll]
Egal was in der Zelle steht, XL sollte nach der Kundenummernstruktur suchen und die in Spalte B schreiben.
"Text in Spalten" habe ich schon durchexerziert. Leider hats nicht geklappt.
gruß und Danke
Andreas

mücke
18.07.2012, 07:52
Moin Andreas,

schau mal hier:
<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Calibri,Arial; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:199px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >Import</td><td >KdNr.</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >13:30 Klaus Muster 123B123456</td><td >123B123456</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td >10:45 Inge Maier 789TT7654321</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >08:15 Horst Schulze 89T7654322</td><td >&nbsp;</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >B2</td><td >=WENN(L&Auml;NGE<span style=' color:008000; '>(VERWEIS<span style=' color:#0000ff; '>(9^9;RECHTS<span style=' color:#ff0000; '>(A2;SPALTE<span style=' color:#804000; '>($1:$1)</span>)</span>*1)</span>)</span>&lt;&gt;6;"";RECHTS<span style=' color:008000; '>(A2;10)</span>)</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

chris-kaiser
18.07.2012, 08:09
Hallo Andreas

Also eine Bspmappe darf ich nicht.


10:30 Max Muster 123hhh456 (123mmm) nochwas

usw, ist nicht erlaubt?
eine Beispielmappe ist nicht das Orginal, es sollte nur erkennbar sein wie der Aufbau ist. :)

Ich denke mal das es viele Möglichkeiten geben würde dies zu lösen wenn man den Aufbau in einer Mappe vor sich hat.

archi01
18.07.2012, 08:14
Hallo,
@Chriskaiser: Die Firewall lässt nix raus. Egal wie es aussieht.
@Mücke: Danke für die Formel. Funktioniert schon fast super :rolleyes: Probleme gibt es, wenn auf den Buchstaben eine Null folgt (kommt leider häufiger vor). Ansonsten scheint es zu klappen. Wenn eine Kundennummer wie ZZZB0ZZZZZ aufgebaut ist, wird sie von der Formel nicht erkannt. Nullen an anderer Stelle machen nichts. Ersetze ich die Null nach dem Buchstaben, wird die Kundennummer erkannt.
Weißt Du da noch was zu? Wäre toll.
Danke euch beiden schon mal vorab für die Mühe,
Gruß
Andreas

chris-kaiser
18.07.2012, 08:21
Hallo Andreas

Dann mache doch bitte ein paar Zeilen...wie es im Orginal auch aussieht.(mit DUMMYDATEN) und kopiere es in das Post.

Es sollten alle Eventualitäten erkennbar sein.


ist immer eine Uhrzeit als erstes?
sind immer zwei Namen?
Sind diese Daten immer durch Leerzeichen getrennt, oder etwas anderes?
beginnt deine Nummer mal als Text einmal als Zahl endet die Nummer mal als Text mal als Zahl

archi01
18.07.2012, 08:21
Nachtrag: Leider verstehe ich die Formel garnicht, deshalb kann ich da auch nichts beisteuern.

archi01
18.07.2012, 08:25
Einzige Regelmässigkeit ist, dass immer folgendes Zeichen, gefolgt von einem Leerzeichen, voran steht:
Hatte versucht das in Text_in_Spalten zu verwenden. Hat aber nicht geklappt.
Zur Nummer ist zu sagen, dass sie immer (also grundsätzlich) so aufgebaut ist: ZZZBZZZZZZ. Das heißt, sie beginnt mit einer zahl, endet mit einer Zahl. Auf die 3. Ziffer folgt immer nur ein Buchstabe, dann wieder 6 Ziffern.
Gruß
Andreas

mücke
18.07.2012, 08:26
Moin Andreas,

dann probier es mal so:
<b>Tabelle7</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:208px;" /><col style="width:91px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >Import</td><td >KdNr.</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >13:30 Klaus Muster 123B123456</td><td >123B123456</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td >13:30 Klaus Muster 123B023457</td><td >123B023457</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >08:15 Horst Schulze 896T7654322</td><td >&nbsp;</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >B2</td><td >=WENN(L&Auml;NGE<span style=' color:008000; '>(RECHTS<span style=' color:#0000ff; '>(A2;L&Auml;NGE<span style=' color:#ff0000; '>(A2)</span>-VERWEIS<span style=' color:#ff0000; '>(99;FINDEN<span style=' color:#804000; '>(" ";A2;ZEILE<span style=' color:#ff7837; '>(A:A)</span>)</span>)</span>)</span>)</span>&lt;&gt;10;"";RECHTS<span style=' color:008000; '>(A2;10)</span>)</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

archi01
18.07.2012, 08:34
Entschuldigt wenn ich hier noch was einfüge:
Die Kundennummer steht nicht immer als letztes in der Zelle :( Dann klappts mit der Formel auch nicht mehr. Tut mir leid, dass die Info erst jetzt kommt.
Ich weiß, ihr werdet nun sagen " Mann, lad doch einen Auszug hoch", ist aber hier strikte Anweisung und meine Arbeit ist mir wichtig.
Hoffe ihr habt dafür Verständniss.
Gruß und Danke
Andreas

archi01
18.07.2012, 08:38
Hallo Mücke,
oh jetzt hast Du dir schon die Mühe gemacht mit der Formel. Klappt nun sehr gut, wenn eben auf die Kundennummer nichts mehr folgt.
Tut mir echt leid. Entschuldige.
Äh - gäbe es evtl noch eine Lösung?
Gruß
Andreas

chris-kaiser
18.07.2012, 08:39
Hallo Andreas

Hat aber nicht geklappt.

was??

Aber vielleicht geht es ja schon mit der Formel von Dirk. :)

Ich hatte Dir das per Makro oder Formel erledigt, nur werde ich selber keine Daten erfinden.

Und da du Daten wie

11:11 xyz yzs 123F1233 xxxx (xxxx)

hier NICHT zur Verfügung stellen kannst......

mücke
18.07.2012, 08:41
Moin Andreas,

und was kann nach der KdNr. noch alles stehen? Zahlen, Buchstaben oder auch beides?

archi01
18.07.2012, 08:45
Hallo Mücke,
leider beides. zudem noch Klammern (..).
Gruß und Danke
Andreas

CitizenX
18.07.2012, 08:49
Hi,

hier mal eine VBA Variante,

Soweit ich deine Vorgaben verstanden habe ;)

Code Kommt ins Modul deiner Tabelle: Rechtsklick auf den Reiter-> Code Anzeigen und ins Codefenster kopieren ->Ausführen

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
&nbsp;
<span class="TOKEN">Sub</span> ReadNumbers()
<span class="TOKEN">Dim</span> myRange <span class="TOKEN">As</span> Range
<span class="TOKEN">Dim</span> Regex <span class="TOKEN">As</span> Object
<span class="TOKEN">Dim</span> myVal, newVal, i&amp;
&nbsp;
<span class="REM"> ' Spalte der Daten-&gt; hier Spalte A (Columns(1))</span>
<span class="TOKEN">Set</span> myRange = Intersect(Columns(1), ActiveSheet.UsedRange)
myVal = Application.Transpose(myRange.Value)
<span class="TOKEN">Set</span> Regex = CreateObject(&quot;VBScript.RegexP&quot;)
&nbsp;
<span class="TOKEN">With</span> Regex
.Global = <span class="TOKEN">True</span>
.ignoreCase = <span class="TOKEN">True</span>
.Pattern = &quot;(.*?)(\b\d{3}[a-z&auml;&uuml;&ouml;&szlig;]\d{6}\b)(.+)?&quot;
<span class="TOKEN">For</span> i = 1 <span class="TOKEN">To</span> <span class="TOKEN">UBound</span>(myVal)
<span class="TOKEN">If</span> .Test(myVal(i)) <span class="TOKEN">Then</span>
newVal = newVal &amp; .Replace(myVal(i), &quot;$2&quot;) &amp; vbNewLine
<span class="TOKEN">Else</span>
newVal = newVal &amp; vbNewLine
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
&nbsp;
myVal = Application.Transpose(Split(newVal, vbNewLine))
<span class="REM"> 'Ausgabebereich -&gt;hier Spalte B</span>
myRange.Offset(, 1) = myVal
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

archi01
18.07.2012, 08:49
Hallo Chris-Kaiser,
mit "nicht geklappt" meinte ich meinen Versuch dieses Quadrat als Trennzeichen in Text_in_Spalten anzugeben. Ich konnte das Quadrat nicht einfügen. Das wäre ja die einfachste Lösung gewesen.
Zu dem Datenbeispiel:
klar, ich kann dir so Dummydaten hier reinschreiben. Aber leider sehen die zellen halt derart unterschiedlich aus, dass diese Dummys nicht beispielhaft wären. Sicher ist immer, dass die Kundenummer eben dem geschilderten Aufbau folgt und davor und dahinter ein Leerzeichen steht. Vor dem Leerzeichen am Anfang steht immer dieses Quadrat.
Gruß
Andreas

chris-kaiser
18.07.2012, 08:53
Hi

ahhh, ich vermute mal das dort ein Zeilenumbruch ist......
wenn ja versuche mal
Spalte A markieren
Daten Text in Spalten
bei Trenner drücke Strg+j

geht das?

archi01
18.07.2012, 08:55
Hallo CitizenX,
passt :)
Vielen Dank. Klappt super. Echt toll.
Danke aber auch euch andere beiden für die Mühe und vorallem eure kostbare Zeit.
Dieses Forum, bzw seine Mitglieder, ist immer wieder toll!
Gruß (und uns allen schnell mal Sonne)
Andreas

archi01
18.07.2012, 08:59
Hallo chris-kaiser,
geht leider nicht. Wird garnicht genommen. Bei Dir?
Wäre eine gute Sache für die zukunft.
Gruß
Andreas

mücke
18.07.2012, 09:00
Moin Andreas,

... Geht das auch mit einer Formel oder ... ;)

@Steffen
Prima Lösung :)

chris-kaiser
18.07.2012, 09:04
Hi

wenn es ein Umbruch wie ALT+Enter ist geht es
ohne weiteres. ;)
In meinem Versuch ging es ohne Probleme. :)

Kannst Du ja selber testen...
Schreibe in eine Zeile mehrere Texte die mit Alt + Enter eingegeben werden.
Hebe danach den Zeilenumbruch auf.

Danach markieren -> Daten Text in Spalten.
und wie vorhin beschrieben.

archi01
18.07.2012, 09:12
@chris: Aha. Ich bekomme das Strg+j nicht in das Feld "Andere" unter Text_in_Spalten. Bei mir wird da nix genommen. Macht nur ping und nix steht drin(g) :grins:
Weiss leider nicht was ich da falsch mache.

@mücke: Scheine ich irgendwie falsch kommuniziert zu haben. Tut mir leid. Mir kam es auf das Ergebnis an, nicht den Weg. Also ob Formel oder VBA war mir (fast) egal. Bei einer Formel hätte ich halt die Hoffnung gehabt, dass ich das verstehe und zukünftig selber anwenden kann. Allerdings muss ich bei Deiner Formel auch komplett aussteigen :rolleyes: Ist wie VBA in Zelle für mich :D

Wie gesagt, vielen Dank euch dreien für Zeit und Mühe.
Gruß
Andreas

CitizenX
18.07.2012, 09:12
Danke für die Blumen mücke :)