Abfrage Exceldatei

Hallo
ich muss Daten aus einer Exceldatei herausziehen.
Für den Zeilensprung ist eine Indexerhöhung um 1 kein Problem.

Leider Stehen aber die Daten auch in den Spalten A,B,C,…
Wo das Ende ist, ist unklar.
Daher möchte ich das Abfangen, wenn die Spalte,Zeile X,1 leer ist zB.

Frage nun, ich muss ja die Spalten auch durchsuchen und Sie ansprechen.
Wie kann ich den Index hier erhöhen??? Gibts da ne Lösung.

Ansonsten muss ich ja direkt die Spaltenbezeichnung A bis BX usw verwenden. Das wäre ja nicht so gut.

Weiss da jmd ne einfach Lösung
Mfg Werner

Hallo, Werner!

ich muss Daten aus einer Exceldatei herausziehen.
Für den Zeilensprung ist eine Indexerhöhung um 1 kein Problem.

Leider Stehen aber die Daten auch in den Spalten A,B,C,…
Wo das Ende ist, ist unklar.
Daher möchte ich das Abfangen, wenn die Spalte,Zeile X,1 leer
ist zB.

Frage nun, ich muss ja die Spalten auch durchsuchen und Sie
ansprechen.
Wie kann ich den Index hier erhöhen??? Gibts da ne Lösung.

Ansonsten muss ich ja direkt die Spaltenbezeichnung A bis BX
usw verwenden. Das wäre ja nicht so gut.

Weiss da jmd ne einfach Lösung

Wie greifst Du denn auf die Inhalte zu? Wenn Du ein Workbook-Objekt hast (also eine Excel-Datei), kannst Du mit dem passenden Worksheet-Objekt auf das entsprechende Tabellenblatt zugreifen. Und vom Worksheet-Objekt kannst Du mit .Cells(zeile, spalte) auf die entsprechenden Zellen zugreifen.

Gruß, Manfred

Hallo
ja genau
Aber jetzt steht in Spalte A, B, C, bis X irgendwas und in Z nichts mehr.

Die Inhalte sind aber identisch und ich möchte ja nicht A,1, dann B,1, dann C,1 usw. aufrufen. Kann man den Index ABC… irgendwie hochzählen.

Sonst muss ich ja ewig viel schreiben, weil die Routine für die Spalte A, B usw. alle identisch sind.

Mfg Werner

Naja ich denke ich mach ne Variable A-Z und je nach Index weisse ich den Buchstaben zu, ab 26 dann eben einen weiteren zB AA.

Das geht so am schnellsten.

Mfg

Grüezi Werner

ich muss Daten aus einer Exceldatei herausziehen.
Für den Zeilensprung ist eine Indexerhöhung um 1 kein Problem.

Aha - und wie genau stellst Du das im Code denn bisher an?

Leider Stehen aber die Daten auch in den Spalten A,B,C,…
Wo das Ende ist, ist unklar.
Daher möchte ich das Abfangen, wenn die Spalte,Zeile X,1 leer
ist zB.

Frage nun, ich muss ja die Spalten auch durchsuchen und Sie
ansprechen.
Wie kann ich den Index hier erhöhen??? Gibts da ne Lösung.

Wie Manfred bereits gesagt hat kannst Du das mit .Cells(Row,Column) tun.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo

na ich schreibe eben Range („A“, 1) zB.

So wenn ich das bis Z genauso habe muss ich ja die Zellen alle mit

Range („B“, 1)
Range („C“, 1)
Range („D“, 1)

ansprechen.

Ich will aber eine Schleife mit Index haben, weil alles gleich ist, also

Range (Index, 1)

Aber wie mache ich das mit dem Index, ab 26 heissen die Spalten ja
AA, AB usw.

Mfg Werner

Lösung???
Alpha1 = „ABCDEFGHIJKLMNOPQRSTUVWXYZ“
Zähler = 1
Y = 1
Z = 1
Do
Alpha2 = „“
If Zähler

Hallo, Werner!

na ich schreibe eben Range („A“, 1) zB.
So wenn ich das bis Z genauso habe muss ich ja die Zellen alle
mit
Range („B“, 1)
Range („C“, 1)
Range („D“, 1)

ansprechen.

Ich will aber eine Schleife mit Index haben, weil alles gleich
ist, also

Range (Index, 1)

Irgendwie kapiere ich nicht wirklich, was Du willst. Was Du mit Range(Index, 1) machst, ist nichts anderes, als Zeile 1 zu durchforsten, oder?

Hier mal ein bisschen sniplets:

dim zeile as long
dim spalte as long
dim wsDeineTabelle as Worksheet

set wsDeinetabelle=... ' eben irgendwie der Verweis auf Deine Tabelle
lngzeile=1
' ich will jetzt mal in die letzte Zelle jeder Zeile ein "Ende" 
' reinschreiben. Welchen Sinn das macht, ist egal...
' Aber nur so lange, wie wenigstens in der ersten Spalte was steht:
do while wsDeineTabelle.Cells(zeile,1)""
 spalte=1 ' vorne anfangen
 do while wsDeineTabelle.Cells(zeile, spalte)""
 spalte=spalte+1 ' nächste Spalte
 loop
 ' jetzt steht in spalte die erste Spalte, die leer ist:
 wsDeineTabelle.Cells(zeile,spalte)="Ende"
 ' und die nächste Zeile durchforsten
 zeile=zeile+1
loop

dim gesamtezeile as string
' jetzt will ich den Inhalt aller Zellen bis zur ersten leeren
' in einen String schreiben.
' mich interessiert jetzt nur die Zeile 7:
gesamtezeile=""
spalte=1
do while wsDeineTabelle.cells(7, spalte)""
 gesamtezeile=gesamtezeile & wsDeineTabelle.cells(7, spalte)
 spalte=spalte+1 ' nächste Spalte
loop
' Gesamten Text ausgeben:
msgbox gesamtezeile

BTW: Code nicht getestet oder sonst was, nur gerade eingehackt.

Das mit dem Range brauchst Du eigentlich gar nicht.

Hilft das? Ansonsten beschreib mal genauer, was Du genau vorhast.

Gruß, Manfred

Einfach!, oder
Hi
Oh ich glaub ich kann auch einfach .Cells (1,1) schreiben.
Geht doch auch oder???

Mfg Werner

Ja siehe unten ich kann auch Cells nehmen mit Zahlen als Spalten.
War mein Fehler.

Mfg Werner

Hallo Werner,

mir geht es anscheinend wie anderen hier, ich verstehe nicht was du da vorhast.

„ich muss Daten aus einer Exceldatei herausziehen.“

Was geschieht dann mit den Daten und nach welchem kriterium werden „hinausgezogen“ usw.

Wenn du unbedingt die Buchstaben der Spalten brauchst, wofür eigentlich?:

Sub tt()
Dim S As Long, strS() As String
For S = 1 To Columns.Count
 strS = Split(Cells(1, S).Address, "$")
 MsgBox strS(1)
Next S
End Sub

Ein Grundgerüst um alle benutzetn Spalten bis zum jeweiligen Ende durchzugehen könnte so aussehen:

Option Explicit
'
Sub tt()
Dim Spa As Long, Zei As Long
For Spa = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
 If Application.WorksheetFunction.CountA(Columns(Spa)) \> 0 Then
 For Zei = 1 To Cells(Rows.Count, Spa).End(xlUp).Row
 ' dein Code
 Next Zei
 End If
Next Spa
End Sub

Gruß
Reinhard

Hi, Werner!

Oh ich glaub ich kann auch einfach .Cells (1,1) schreiben.
Geht doch auch oder???

Ähem: Das war doch das, was ich mit http://www.wer-weiss-was.de/app/service/board_navi?A… meinte… :wink:

Gruß, Manfred