Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung

Excel - SVERWEIS

123 Beiträge, Schlüsselwörter: Matrix, Wert, Excel, Zellen, Sverweis

Excel - SVERWEIS

09.08.2012 um 10:48
@A38O

ja aber der suchbegriff ist mehrfach drin, immer wieder in einer anderen zeile
zb A:A und darin dann mal in 1, 12, 27, 89 usw
und ich brauch immer die nummer der zeile, in der er begriff steht
am liebsten zum runter kopieren :D


melden
Anzeige

Excel - SVERWEIS

09.08.2012 um 11:06
@YaaCool

Da kannst Du sowas nehmen, allerdings sollte der zu durchsuchende Bereich nicht allzu groß sein:

Function ZeileMitWert1(ByVal strSuchBegriff As String, ByRef rngBereich As Range, ByVal lngWievielter)
Application.Volatile
Dim objZelle As Object, lngZ As Long
ZeileMitWert1 = 0
lngZ = 0
For Each objZelle In rngBereich
If objZelle = strSuchBegriff Then
lngZ = lngZ + 1
If lngZ = lngWievielter Then
ZeileMitWert1 = objZelle.Row: Exit For
End If
End If
Next
End Function


Und in die Zelle sowas:

=ZeileMitWert1($C$3;$D$3:$D$28;ZEILE()-4)


melden

Excel - SVERWEIS

09.08.2012 um 11:21
Ich hab das jetzt mit der anderen Funktion gemacht, zwar ein bisschen zweckentfremdet aber das ist auch ok :)


melden

Excel - SVERWEIS

09.08.2012 um 11:27
@YaaCool

Hauptsache es funktionobelt.


melden

Excel - SVERWEIS

17.08.2012 um 09:42
Kann ich mit excel nach bestimmten kriterien in einer txt datei suchen?


melden

Excel - SVERWEIS

17.08.2012 um 10:12
@YaaCool
YaaCool schrieb:Kann ich mit excel nach bestimmten kriterien in einer txt datei suchen?
Ja. :)

Du kannst Daten importieren und damit arbeiten. Damit habe ich aber kaum gearbeitet, kenne das also weniger.

Die andere Methode (meine bevorzugte) ist, mit VBA auf die Dateien zuzugreifen.


melden

Excel - SVERWEIS

17.08.2012 um 10:20
@A38O

Kann ich nicht importieren und auch nicht rein kopieren, ist nämlich zu groß
Excel hat eine Grenze von 65536 Zeilen hab ich heute feststellen müssen und meine datei hat weit mehr. Ich hab versucht sie geteilt zu kopieren, ist aber auch zu aufwendig, ich glaub so das 20fache oder so
Word sagt ca 17.000 Seiten und will mir auch nicht sagen wieviele Zeilen
Deshalb wollte ich wissen, ob ich das Importieren und/oder kopieren auch umgehen kann und die Daten direkt aus der .txt ansprechen kann um mit ihnen zu arbeiten


melden

Excel - SVERWEIS

17.08.2012 um 10:26
@YaaCool

Mein Excel hat 1048576 Zeilen. ;)
Ich glaube, seit Version 2007 gibt es mehr.

Auf jeden Fall musst Du darauf vorbereitet sein, dass die Verarbeitung der Textdatei eine Weile dauern kann. Dann kannst Du zum Beispiel solch eine Routine verwenden:

Dim lngDateiNummer As Long
Dim strZeile As String, strPfad As String

strPfad = "C:\XYZ\meinedatei.txt"

If Dir(strPfad) "" Then
lngDateiNummer = FreeFile
Open strPfad For Input As #lngDateiNummer
Do While Not EOF(lngDateiNummer)
Line Input #lngDateiNummer, strZeile
If strZeile "" Then
'Daten auswerten
End If
Loop
Close #lngDateiNummer
End If


melden

Excel - SVERWEIS

17.08.2012 um 10:53
@A38O

was mach ich damit?


melden

Excel - SVERWEIS

17.08.2012 um 10:58
@YaaCool

Das ist nun etwas abhängig, wie es gebraucht wird.

Am einfachsten:

Deine Mappe öffnen, dann Alt + F11. Anschließend "Einfügen > Modul". Dort den Code hineinkopieren und den Pfad anpassen:

Sub Dateiauslesen()
Dim lngDateiNummer As Long
Dim strZeile As String, strPfad As String

strPfad = "C:\XYZ\meinedatei.txt"

If Dir(strPfad) "" Then
lngDateiNummer = FreeFile
Open strPfad For Input As #lngDateiNummer
Do While Not EOF(lngDateiNummer)
Line Input #lngDateiNummer, strZeile
If strZeile "" Then
'Daten auswerten
End If
Loop
Close #lngDateiNummer
End If
End Sub

An der Stelle mit "'Daten auswerten" hast Du Zugriff auf die Daten der gerade eingelesenen Zeile. Tja, aber da kann ich nicht wissen, was Du damit vor hast. ;)

Du kannst sie zum Beispiel in Zellen einlesen, nach dem Schema:

Cells(lngZ, intS) = strZeile

Du kannst die Daten aber auch noch auswerten:

if strzeile = irgendwas then mache was

Usw., usf.


melden

Excel - SVERWEIS

17.08.2012 um 11:00
in zellen einlesen hätte ich ja das selbe prob wie beim kopieren
aber ich könnte sie so evtl filtern


melden

Excel - SVERWEIS

17.08.2012 um 11:07
@A38O

ähm ja und wie benutz ich das jetzt in der excel tabelle selbst? :D
also ich mein er muss doch irgendwoher wissen ab wo er damit starten darf?


melden

Excel - SVERWEIS

17.08.2012 um 11:12
@YaaCool
YaaCool schrieb:in zellen einlesen hätte ich ja das selbe prob wie beim kopieren
aber ich könnte sie so evtl filtern
Ja, natürlich - da kannst Du ja schon beim Einlesen der Datei prüfen, was überhaupt verwendet werden soll.
YaaCool schrieb:ähm ja und wie benutz ich das jetzt in der excel tabelle selbst? :D
also ich mein er muss doch irgendwoher wissen ab wo er damit starten darf?
Im einfachsten Fall Alt + F8, dann den Namen der Routine wählen und "Ausführen".

Ansonsten kannst Du auch Schaltflächen auf die Tabelle zeichnen. Ich habe kein altes Excel mehr, da müsstest Du selbst mal suchen: Irgendwo in der Symbolleiste kann man sich Steuerelemente anzeigen lassen (irgendwas mit "Formular"). Da dann die Schaltfläche zeichnen, anschließend kommt die Frage, welches Makro zugewiesen werden soll. Den Namen wählen und fertig.


melden

Excel - SVERWEIS

17.08.2012 um 11:16
@A38O

kann ich bei der abfrage mit nem * arbeiten?
wenn ich alle zeilen eingelesen haben möchte, die den selben anfang haben oder so
oder sowas wie
If strZeile = "anfang der zeile*" Then ...
oder so
oder brauch ich da kein * um ihm zu sagen, was danach kommt ist egal?


melden

Excel - SVERWEIS

17.08.2012 um 11:24
@YaaCool

Ja, da gibt es mehrere Möglichkeiten. Du kannst schon mit LIKE und Platzhaltern arbeiten. Wie Du es beschrieben hast, würde ich es aber so machen:

If left(strzeile, 10) = "abcdefghij" then …

Es kann nur sein, dass Du ein paar Prüfungen einbauen musst. Wenn zum Beispiel die Groß-/Kleinschreibung unterschiedlich sein kann, kannst Du nehmen:

If ucase(left(strzeile, 10)) = "ABCDEFGHIJ" then …

Oder wenn am Zeilenanfang Tabs oder Leerstellen sein können, kannst Du nehmen:

If left(trim(strzeile), 10) = "abcdefghij" then …

Oder halt eine Kombination davon. Das hängt vom konkreten Fall ab.

Du darfst nur nciht vergessen, die Zeilen hochzuzählen. Beispiel:

lngZ = 0
intS = 1

Und bevor Du die Zeile einliest:

If left(strzeile, 10) = "abcdefghij" then
lngz = lngz +1
cells(lngz, ints) = strzeile
end if

Hinweis: Ich tippe "Befehle" (Methoden, Funktionen, usw.) wie ucase immer klein ein. Wenn Excel dass dann groß macht, wurde es erkannt und ich habe keinen Tippfehler drin.


melden

Excel - SVERWEIS

17.08.2012 um 11:29
@A38O

er sagt mein loop hat kein do?


melden

Excel - SVERWEIS

17.08.2012 um 11:32
@YaaCool

Da irrt sich VBA manchmal, das muss nichts mit Loop zu tun haben. Aber eine Verschachtelung ist nicht geschlossen - irgendwo fehlt ein End If oder ein Next.

If

End If

For …

Next


For …
If

End If
Next


melden

Excel - SVERWEIS

17.08.2012 um 11:45
@A38O

jetzt gibt er mir den fehler 400 zurück :(


melden

Excel - SVERWEIS

17.08.2012 um 11:46
Klicke mal auf "Debuggen" und poste mal die Zeile mit dem Cursor.


melden
Anzeige

Excel - SVERWEIS

17.08.2012 um 11:47
gefunden mom


melden
770 Mitglieder anwesend
Konto erstellen
Allmystery Newsletter
Alle zwei Wochen
die beliebtesten
Diskussionen per E-Mail.

Themenverwandt
Trojaner entfernen34 Beiträge