cjackson
Goto Top

Überprüfen Wenn ...... dann.....

Hallo, habe folgendes Problem ich bekomme als Rohdatei eine .xls mit mehreren Spalten.
Als erstes sollen nur die Spalten C,I,J,K stehen bleiben der Rest wird nicht benötigt.

sprich Spalte:
C-> A
I-> B
J-> C
K-> D

2. Nun sind Artikelnummern noch mehrfach vorhanden, dies sollen so überprüft werden, dass wenn der Inhalt aus Spalte A-E identisch mit einer folgenden sind, diese Artikelposition nur einmal auftaucht.

3. Sollte ich ein Makro haben, das überprüft, ob in einer Spalte z.B. 'B2' das Suchwort "*Blech*" enthalten ist, wenn ja dann soll in 'F2' ein x stehen ansonsten '-'.

4. Ein Makro, welches aus Spalte B, alle Positionen löscht die das Suchwort "*Bogen*" enthalten.

Gibt es eine Möglichkeit nach einer bestimmten Formatierung zu suchen z.B. Zeichnungsnr. 933602305 000 sprich 9 Zahlen blank 3 Zahlen? vor und hinter dieser Zahl können aber noch Textelemente stehen.

Bin für jede Hilfe dankbar. Eine kompl. Lösung wäre ganz nett, aber einzelne Sachen können mir auch schon weiterhelfen.

Mit freundlichen Grüßen
CJACKSON

Content-ID: 79913

Url: https://administrator.de/contentid/79913

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

CJackson
CJackson 05.02.2008 um 13:09:28 Uhr
Goto Top
Sollte dringend Hilfe kriegen. Kann mir denn niemand hierbei helfen?

Danke schon einmal im Voraus.

Mfg CJACKSON
SvenGuenter
SvenGuenter 05.02.2008 um 13:46:22 Uhr
Goto Top
Benutze mal die Boardsuche. Ich bin mir sicher das so ein Problem hier schonmal beschrieben wurde udn ich sogar dazu eine Lösung geschrieben hatte.


Gruß

Sven Günter
SvenGuenter
SvenGuenter 05.02.2008 um 14:11:46 Uhr
Goto Top
'Es muss eine Schaltfläche mit Namen Schaltfläche_1 eingefügt werden.  

Option Explicit


Sub Schaltfläche1_BeiKlick()

Dim reihe As Integer
Dim spalte As Integer

reihe = 1
spalte = 1

While Not (Tabelle1.Cells(reihe, spalte)) = ""  


Tabelle2.Cells(reihe, 1) = Tabelle1.Cells(reihe, 3)
Tabelle2.Cells(reihe, 2) = Tabelle1.Cells(reihe, 9)
Tabelle2.Cells(reihe, 3) = Tabelle1.Cells(reihe, 10)
Tabelle2.Cells(reihe, 4) = Tabelle1.Cells(reihe, 11)
'Statt blech kann man auch auf eine Axcelzelle oder auf ein Textfeld verweisen. Bspl   
'Tabelle2.Cells(1,15) Nur zur Erläuterung am Rande die erste zahl gibt die Reihe und die zweite   
'Zahl die spalte des Excelsheets wieder.  

If InStr(Tabelle2.Cells(reihe, 2), "blech") Then  
Tabelle2.Cells(reihe, 6) = "+"  
Else
Tabelle2.Cells(reihe, 6) = "-"  
End If


reihe = reihe + 1
Wend
End Sub
'Es muss natürlich der Name Tabelle1 und Tabelle2 an die entprechenden Dokumente die bei   
'einem vorhanden sind angepasst werden  

Das schreibt dir schonmal die Daten aus der einen in die andere Zelle.

Wenn du nun nach begriffen suchen willst machst du DIr noch eine Textbox und durchläufst deine Zellen und suchst nach dem Ausdruck den du haben willst.
Die funktion checkt auch schon nach Blech. Du kannst das auch über ein Textfeld dynamisch machen. Den Rest wirst du wohl alleine hinbekommen oder?

Gruß

Sven
CJackson
CJackson 05.02.2008 um 18:18:17 Uhr
Goto Top
> If InStr(Tabelle2.Cells(reihe, 2),
> "blech") Then  
> Tabelle2.Cells(reihe, 6) = "+"  
> Else
> Tabelle2.Cells(reihe, 6) = "-"  
> End If
> 
> 
> reihe = reihe + 1
> Wend
> End Sub
> 

ah ok das funktioniert ja wunderbar. Dankeschön!!!

Gibt es auch die Möglichkeit nur gezielt nach dem Wort/ Schreibweise "BLECH" zu suchen bsp. Blech soll stehen bleiben BLECH aber net?

gibts ne Möglichkeit nach mehreren Sachen zu suchen?
in einer Zeile oder muss ich dafür jeweils eine neue Bedingung aufmachen?

Mfg CJACKSON
bastla
bastla 05.02.2008 um 19:54:19 Uhr
Goto Top
Hallo CJackson!

nur gezielt nach dem Wort/ Schreibweise "BLECH" zu suchen bsp. Blech soll stehen bleiben BLECH aber net?
Sollte eigentlich ohnehin unterschieden werden - wenn Du ganz auf Nummer sicher gehen willst:
If InStr(1, Tabelle2.Cells(reihe, 2), "BLECH", 0) Then  
gibts ne Möglichkeit nach mehreren Sachen zu suchen? in einer Zeile oder muss ich dafür jeweils eine neue Bedingung aufmachen?
In diesem Fall könntest Du auf die RegEx-Suche ausweichen:
Set regAusdr = CreateObject("VBScript.RegExp")  
regAusdr.Pattern = "Holz|HOLZ|Blech|BLECH"  
regAusdr.IgnoreCase = False
regAusdr.Global = False
If regAusdr.Test(Tabelle2.Cells(reihe, 2).Value) Then
So kannst Du dann auch Deine "Zeichnungsnr." finden - dazu ist nur die "Pattern"-Zeile auf
regAusdr.Pattern = "\d{9,9} \d{3,3}"  
zu ändern.

Grüße
bastla
CJackson
CJackson 05.02.2008 um 20:03:36 Uhr
Goto Top
hi Bastla du mal wieder ist echt nett. Thx hat funktioniert. Wo kann man denn so etwas lernen?

regAusdr.Pattern = "\d{9,9} \d{3,3}"

Wofür stehen heir die \d´s 9,9 sagt Neun Char aber wie kann ich das format festlegen?

Bin grad a bissl Planlos.

Mfg CJACKSON
bastla
bastla 05.02.2008 um 20:11:10 Uhr
Goto Top
Hallo CJackson!

Wo kann man denn so etwas lernen?
Nachschlagen zumindest zB hier (bzw original in der VBScript-Doku bei MS) ...

"\d" steht für eine Ziffer (findest Du auch in der verlinkten Aufstellung).

Grüße
bastla
CJackson
CJackson 05.02.2008 um 20:16:33 Uhr
Goto Top
ah ok thx wunderbar dann kan n ich mich selbst mal n bissl schlau machen. Sollte ich nochmal etwas haben meld ich mich bei dir thx.
CJackson
CJackson 08.02.2008 um 08:17:01 Uhr
Goto Top
So weit hat alles funktioniert, hab alles für unsere Wünsche abgeändert. Nun sollte ich noch wissen ob es die möglichkeit gibt zu sagen: z.B. wenn..... dann "+" in Spalte 6 aber erst ab Zeile 2? damit meine Überschrift nicht Überschrieben wird.

Oder noch Besser n makro, welches eine Zeile am Anfang hinzufügt und gleich die Zellen befüllt.

Lg Jackson
CJackson
CJackson 08.02.2008 um 08:19:49 Uhr
Goto Top
hat sich erledigt habs gefunden. Einfach den Wert reihe = 2 am Anfang.
Lg Jackson