VBA - Spalten durchsuchen und nach Text/Zahl prüfen
#1
Hallo zusammen,

vielleicht könnt ihr mir weiterhelfen da ich in weiten Internet nichts passendes zu meine Frage finden könnte.
Ich habe einen Langen Excel Liste, die von Mitarbeitern ständig aktualiseirt werden.
Leider passiert es sehr oft, das Einträge vergessen werden, wo ich jedes mal danach suchen muß.
Vielleicht gibt es über VBA eine Möglichkeit, wo mir das suchen etwas einfacher machen kann ?
Daher meine Fragen an euch.

Wenn in Spalte D ein Textinhalt steht, muß in Spalte V auch ein Textinhalt stehen und in Spalte W ein Zahl.
Wenn jetzt in Spalte V oder W kein Textiinhalt oder Zahl steht soll er eine Meldung geben und mir sagen in welcher Spalte/Zelle er das gefunden hat.

Ist das möglich ?

Danke schonmla in voraus..
Antworten Top
#2
Moin!
Als Formel in A2:
=ISTTEXT(D2)*ISTTEXT(V2)*ISTZAHL(W2)
(herunterziehen)

Dann könnte man nach 0 filtern und hat alle "falschen" Datensätze.

(ich weiß selber, dass Du "eigentlich" VBA willst, nur wozu?)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  •
Antworten Top
#3
@RPP63: Danke, das mit der Formel ist eine gute Idee nur sind die Tabellenblätter nicht von mir, kann nicht so ohne weiteres Formeln einbauen.
Ich dachte ich mache mir ein eigenes Blatt und prüfe extern die Dateien nach vollständigkeit durch, deswegen wollte ich auch die Meldung nach Spalte/Zeile.

Ich habe diesen Code gefunden:
Code:
Dim rng as Range
set rng = ActiveSheet.Range("A1:B100").Find("Suchbegriff")
if rng is nothing then
MsgBox "Nichts gefunden"
exit sub
end if
MsgBox "Zeile: " & rng.row & "; Adresse: " & rng.Address

leider erfüllt dieser Code bis auf die Anzeigen der Spalte/Zeile nicht meine Anforderungen.
Da ich mich mit VBA nicht auskenne weiss ich nicht wie ich das umbauen muß.

Grüße
Antworten Top
#4
Code:
Sub M_snb()
  sn = Filter([transpose(if(ISTEXT(D2:D2000)*ISTEXT(V2:V2000)*ISnumber(W2:W2000),"","_"&row(2:2000)))], "_")
  MsgBox Join(sn, vbLf)
End Sub
oder mit Conditional Formatting

Code:
Sub M_snb()
   Columns(4).SpecialCells(2).FormatConditions.Add(2, , "=not(istext($D2)*istext($V2)*isnumber($W2))").Interior.ColorIndex = 4
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  •
Antworten Top
#5
Hallo,

@snb: war fasziniert von Deinem super kurzen, cleveren Code und habe den einmal ausprobiert. - Hat mir bei meinem Test bis Zeile 20 immer alle Zeilen auch ohne Übereinstimmung angezeigt. Habe etwas modifiziert und nun wirft er nur die Zeilen mit Übereinstimmung aus. - Ist das so korrekt?

Code:
Sub M_snb()
  sn = Filter([transpose(if(NOT(ISTEXT(D2:D20)*ISTEXT(V2:V20)*ISnumber(W2:W20)),"","_"&row(2:20)))], "_")
  MsgBox Join(sn, vbLf)
End Sub

Grüße

Norbert
Antworten Top
#6
Ich kenne die Daten nicht, versuch mal:

Code:
Sub M_snb()
  sn = Filter([transpose(if(ISTEXT(D2:D20)*ISTEXT(V2:V20)*ISnumber(W2:W20),"","_"&row(2:20)))], "_")
  MsgBox Join(sn, vbLf)
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
@snb: Danke, funktioniert soweit gut nur gibs da ein Problem.
Die MsgBox geht über das Bildschirm hinaus bzw. ist zu lang.
Beim korrigieren der gefundene Fehler wird die Liste natürlich kürzer, nur würde es mich denoch intressieren ob runtergesrollt werden kann oder
die gefunden Zeilen nicht nur untereinander sonder auch nebeneinander aufgelistet werden kann ?
Zum schluss noch, wenn er nichts findet soll er eine Meldung erscheinen z.B alles O.K oder keine Fehler gefunden.
Aktuell zeigt er das selbe MsgBox an nur leer.

Grüsse

Kiwie
Antworten Top
#8
Hallo Excel Freunde,

ich habe diesmal eine Excel Datei erstellt wo das ganze vielleicht besser zu erkennen ist.
Leider kann ich das Orginale nicht Hochladen ,da es Firmen interne Daten beinhaltet.
Beispiel 1 prüft Arbeitsblatt Beispiel 1, Beispiel 2 prüft Arbeitsblatt Beispiel 2,Beispiel 3 prüft Arbeitsblatt Beispiel 3
Diesmal soll es nicht als MsgBox ausgegeben werden sondern in die Zeile I5:Q11 übertragen werden.
Finde es so übersichtlicher. Leider kenne ich mich mit VBA überhaupt nicht aus (könnt ihr an der Datei erkennen).

Grüße

Kiwie


Angehängte Dateien
.xlsm   prüfer.xlsm (Größe: 26,4 KB / Downloads: 6)
Antworten Top
#9
Nochmal:
Warum willst Du VBA?
Schließlich habe ich Dir ganz zu Beginn eine pragmatische Formellösung gegeben, nach der man filtern kann.

Zitat:Die MsgBox geht über das Bildschirm hinaus bzw. ist zu lang.


Prima!
Ein klassisches Beispiel dafür, dass Du Dich verrennst!
Was machst Du denn mit der angezeigten MsgBox?
Abschreiben?  21
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
@RPP63: Es sind mehrere Dateien die bis zu 6000 Zeilen lang sind, jede Datei einzeln zu öffnen und zu suchen ist etwas Zeitaufwendig.
Mit VBA kann ich über eine Dateie auf mehrere Dateien mit ein Klick sehen ob ein Eintrag fehlt, was auch mit den Beispiel von Snb soweit gut funktioniert hat.
Problem dabei ist nur die MsgBox, deswegen hatte ich gefragt gehabt ob das auch anders gelöst werden kann,wie z.B in der Datei wo ich angehängt habe.
Bin leider was VBA angeht ein Noob.

Grüße

Kiwie
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste