Werte suchen

Hallo Leute, ich habe folgendes Problem:

Ich habe 2 Tabellen,

  1. Tabelle stehen von F42 bis F1570 verschiedene Zahlen drin. Bsp 1100

  2. Tabelle stehen von A1 bis A 55 ganz viele verschiedene Zahlen und Buchstaben drin Bsp. asa1005, asa1100,asa2000…

leider eben massenweise Werte in einer Zelle statt 1 Wert pro Zelle.
Dies kann ich leider auch nicht ändern, da es 2000 Werte sind und ich nicht jeden einzelnen Zahlencode „asa1100“ einzelnt in jede Zelle schreibe.

Deshalb wollte ich ein Programm schreiben, was mir dies vielleicht erleichtert, nur funktioniert es nicht :smiley:

Vielleicht könnt ihr mir dabei helfen.

Gruß

Sub asaSuchen()

For i = 42 To 1566
x = Cell(6, i).Value`Die zu vergleichene Zelle

If isnummeric(x) Then
For j = 1 To 57
y = Cell(1, j).Value ´Zellen mit den vielen Codenamen drin
If InStr(y, x) 0 Then
Cell(2, i).Value = „sys“ ´wenn vorhanden dann sys reinschreiben

End If
Next

End If

Next

End Sub

Danke schon einmal für eure Hilfe.

Hallo Leute, ich habe folgendes Problem:

Hallo Darkness,

Deshalb wollte ich ein Programm schreiben, was mir dies
vielleicht erleichtert, nur funktioniert es nicht :smiley:

Vielleicht könnt ihr mir dabei helfen.

Schauen wir mal.

Sub asaSuchen()

For i = 42 To 1566
x = Cell(6, i).Value`Die zu vergleichene Zelle

Es muss

Cells

heißen. Und wenn du die Zeilen runter zählen willst, muss das i vorner stehen, also

x = Cells(i, 6)

Außerdem funktioniert die Zeile nur, wenn bei der Ausführung des Codes das Tabellenblatt, auf das du dich beziehst, aktiv ist. Sonst musst du es mit angeben, also

x = Sheets("Tabelle1").Cells(i, 6)

If isnummeric(x) Then

Das muss heißen

 If IsNumeric(x) Then

For j = 1 To 57
y = Cell(1, j).Value ´Zellen mit den vielen Codenamen drin

Auc hier, wenn du die Zeilen runterzählen willst

y = Cells(j, 1)

Und hier beziehst du dich ja auf das andere Blatt, also

y = Sheets("Tabelle2").Cells(j, 1)

If InStr(y, x) 0 Then
Cell(2, i).Value = „sys“ ´wenn vorhanden dann sys
reinschreiben

Siehe oben

Sheets("Tabelle2").Cells(i, 2).Value = "sys"

End If
Next

End If

Next

End Sub

Danke schon einmal für eure Hilfe.

Das sind jetzt nur die Fehler, die mir gleich aufgefallen sind. Ob die Logik des Ganzen stimmt, hab ich jetzt nicht genau kontrolliert.
Melde dich, falls es weitere Fragen gibt.

Gruß, Andreas

Guten Tag,

danke für deine Hilfe hat schon sehr geholfen.

Läuft auch durch, allerdings funktioniert nicht alles so wie es soll…

Wenn in einer Zelle nichts steht, dann schreibt das Programm auch ab und zu „sys“ , aber nicht bei jeder leeren Zelle.

Keine Ahnung warum.

Gruß

Bist du sicher, dass in den fraglichen Zellen nichts steht, oder sind da vielleicht Leerzeichen oder sonst irgendwelche nichtdarstellbaren Zeichen drin?

Gruß, Andreas

Läuft auch durch, allerdings funktioniert nicht alles so wie
es soll…
Wenn in einer Zelle nichts steht, dann schreibt das Programm
auch ab und zu „sys“ , aber nicht bei jeder leeren Zelle.
Keine Ahnung warum.

Hallo Darkness,

lade bitte mit dem obersten Link in FAQ:2606 deine Mappe hoch.
Ich würde gerne sehen wie du das von Andreas umgesetzt hast und
was du vor hast da mit der Einfügung von sys.
In deinem Anfragetext tauchte sys nicht auf, erst in deinem
Codeentwurf.

Welche Bedeutung hat da diese 88 für dich?

Gruß
Reinhard

Hab die Datei im Moment nicht hier, werde mal etwas vergleichbares morgen hochladen.

Die 88 ist das Geburtsjahr :wink:

Hallo, es funktioniert immer noch nicht, habe mal eine ähnliche Datei angefertig , die auch nicht funktioniert. Habe extra noch mal alle Zelleninhalte gelöscht, wo gernell nichts drin stand.

Denke es liegt an der Programmierung:

Hier der Link:

http://www.file-upload.net/download-4542554/Neu-Micr…

http://www.file-upload.net/download-4542554/Neu-Micr…

Hallo, es funktioniert immer noch nicht, habe mal eine
ähnliche Datei angefertig , die auch nicht funktioniert. Habe
extra noch mal alle Zelleninhalte gelöscht, wo gernell nichts
drin stand.

Hallo Darkness,

was bedeutet „funktioniert nicht“ genau?
Das Makro erzeugt Sys-Einträge in B4:B10, was willst du haben?

So:

Tabellenblatt: C:\DOKUME~1\ich2\LOKALE~1\Temp\[Neu-Microsoft-Office-Excel-Arbeitsblatt.xlsm]!Tabelle1
 │ B │
───┼─────┤
 4 │ sys │
───┼─────┤
 5 │ sys │
───┼─────┤
 6 │ │
───┼─────┤
 7 │ sys │
───┼─────┤
 8 │ │
───┼─────┤
 9 │ sys │
───┼─────┤
10 │ sys │
───┼─────┤
11 │ │
───┼─────┤
12 │ │
───┼─────┤
13 │ │
───┴─────┘
Benutzte Formeln:
B4 : =WENN(F4="";"";WENN(ZÄHLENWENN(Tabelle2!$A$1:blush:A$8;"\*"&F4&"\*")\>0;"sys";""))
B5 : =WENN(F5="";"";WENN(ZÄHLENWENN(Tabelle2!$A$1:blush:A$8;"\*"&F5&"\*")\>0;"sys";""))
B6 : =WENN(F6="";"";WENN(ZÄHLENWENN(Tabelle2!$A$1:blush:A$8;"\*"&F6&"\*")\>0;"sys";""))
usw. bis B13

B4:B13
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

So funktioniert’s
Hallo Darkness,

das Problem war, dass VBA offensichtlich die leeren Zellen auch als numerisch erkennt. Ich hab eine kleine Erweiterung eingebaut, die abfragt, ob die Zellen leer sind. So geht’s dann:

Sub IDSuchen()

 For i = 4 To 13
 x = Sheets("Tabelle1").Cells(i, 6).Value
 If IsNumeric(x) And Not IsEmpty(x) Then
 For j = 1 To 10
 y = Sheets("Tabelle2").Cells(j, 1).Value
 If InStr(y, x) 0 Then Sheets("Tabelle1").Cells(i, 2).Value = "sys"
 Next
 End If
 Next
End Sub

Gruß, Andreas

Formellösung in Vba benutzt

http://www.file-upload.net/download-4542554/Neu-Micr…

Hallo Darkness,

nachfolgender Code passt sich automatisch den gefüllten Spaltenlängen in Tabelle2!A und Tabelle1!F an.

Gruß
Reinhard

in ein Standardmopdul, Modul1 o.ä.

Option Explicit

Sub IDSuchen()
Dim Formel As String, Zei As Long
Application.ScreenUpdating = False
Zei = Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row
Formel = "=IF(F4="""","""",IF(COUNTIF(Tabelle2!$A$1:blush:A$" & \_
 Zei & ",""\*""&F4&""\*"")\>0,""sys"",""""))"
With Sheets("Tabelle1")
 .Range("B4:B" & .Cells(Rows.Count, "F").End(xlUp).Row).Formula = Formel
 .Range("B4:B" & .Cells(Rows.Count, "F").End(xlUp).Row).Value = \_
 .Range("B4:B" & .Cells(Rows.Count, "F").End(xlUp).Row).Value
End With
Application.ScreenUpdating = True
End Sub