Supportnet / Forum / Skripte(PHP,ASP,Perl...)
VBA Tabelle auswerten und in zutreffendes in EINER Zelle darstellen
Frage
Hallo Zusammen,
hab ein kleines problem mit Excel. Mein Tabelle ist so aufgebaut.
.................A.....B.....C
Modell1..........X......X
Modell2...X...............
Modell3...X...............
Jetzt würde ich gerne die Spalte A durchsuchen und falls ein "x" vorhanden ist soll der Text links davon in eine Zelle geschrieben werden, aber eben alle zutreffenden.
Müsste dann irgednwie so aussehen
.................A.....B.....C
Modell1..........X......X Model2Model3
Modell2...X...............
Modell3...X...............
Ziel der ganzen Sache ist ein Tintenpatrone/Druckerzuordnung.
Also welche Patronen für welchen Drucker passen und die als Textfile exportierbar ist.
Any Hints in VBA ?
Merci
.
Antwort 1 von Event
Hallo
links von der Spalte kann nix stehen !
Versuchs ´mal besser zu beschreiben.
Gruß
links von der Spalte kann nix stehen !
Versuchs ´mal besser zu beschreiben.
Gruß
Antwort 2 von Nzer_de
Sorry, mit Links meinte ich die Spalte neben dem "X" also Model1,2,3, etc....also z.B. Deskjet 500/550 und in der nächsten zeile Deskjet 850 und in der Dritten Deskjet 980´ etc... nachher soll einfach übreall wo ein x ist der Text in einer Zelle zusammengefasst sein. In meinem Beispiel einfach für
Spalte A Model2Model3
Spalte B Model1
Spalte C Model1
Hoffen es ist jetzt ein bisschen klarer geworden.
Gruss
Marco
Spalte A Model2Model3
Spalte B Model1
Spalte C Model1
Hoffen es ist jetzt ein bisschen klarer geworden.
Gruss
Marco
Antwort 3 von manei
Hallo,
wenn Du die passenden Tintenpatronen zu den einzelnen Druckermodellen finden willst, must Du dies schon mit in die Tabelle mit einarbeiten.
In VBScript ist das ein Array und in Deinem Fall zweidimensional; ein Array beginn immer bei 0, hier also bei 0, 0, da zweidimensional.
Im o.a. Beispiel hat Deine Tabelle die Dimension
(3, 3) wobei (0, 0) leer ist, (1-3, 0) das Druckermodell und (0, 1-3) den Patronentxp angibt.
Suchst Du jetzt z.B. den Drucker Deskjet 500/550, müßte der irgendwo in Zeile 1 - 3 und in Spalte 0 aufgeführt sein.
Du liest Deine Tabelle in den Speicher, der Drucker -Name steht z.B. in x.
wenn Du die passenden Tintenpatronen zu den einzelnen Druckermodellen finden willst, must Du dies schon mit in die Tabelle mit einarbeiten.
In VBScript ist das ein Array und in Deinem Fall zweidimensional; ein Array beginn immer bei 0, hier also bei 0, 0, da zweidimensional.
Im o.a. Beispiel hat Deine Tabelle die Dimension
(3, 3) wobei (0, 0) leer ist, (1-3, 0) das Druckermodell und (0, 1-3) den Patronentxp angibt.
Suchst Du jetzt z.B. den Drucker Deskjet 500/550, müßte der irgendwo in Zeile 1 - 3 und in Spalte 0 aufgeführt sein.
Du liest Deine Tabelle in den Speicher, der Drucker -Name steht z.B. in x.
Antwort 4 von manei
Hallo,
bin versehentlich auf die falsche Taste gekommen und der unfertige Thread wurde übertragen. Also nochmals von vorne.
Wenn Du die passenden Tintenpatronen zu den einzelnen Druckermodellen finden willst, must Du dies schon mit in die Tabelle mit einarbeiten.
In VBScript ist das ein Array und in Deinem Fall zweidimensional; ein Array beginn immer bei 0, hier also bei 0, 0, da zweidimensional.
Im o.a. Beispiel hat Deine Tabelle die Dimension
(3, 3) wobei (0, 0) leer ist, (1-3, 0) das Druckermodell und (0, 1-3) den Patronentxp angibt.
Suchst Du jetzt z.B. den Drucker Deskjet 500/550, müßte der irgendwo in Zeile 1 - 3 und in Spalte 0 aufgeführt sein.
Du liest Deine Tabelle in den Speicher, der Drucker -Name steht z.B. in x, die Tabelle als Array in arg. Mit
For i = 1 To UBound(arg)
If arg(i, 0) = x Then
for j = 1 To 3 (UBound ist nur für die erste Dim.)
if arg(i, j) = "X" Then
y = arg(0, j)
End If
Next
End If
Next
kannst du dann zu jedem Drucker die passende Patrone finden.
Um Exel mit VBScript ansprechen zu können, mußt Du genau so wie in Word, die Exel-VBA Befehlsrefernz mit leichten Abänderungen nutzen.
Hast Du in der Exel Tabelle nur Model 1 - ? / A B C .. stehen, solltest du das im Script in einem Array definieren.
MfG maneich
bin versehentlich auf die falsche Taste gekommen und der unfertige Thread wurde übertragen. Also nochmals von vorne.
Wenn Du die passenden Tintenpatronen zu den einzelnen Druckermodellen finden willst, must Du dies schon mit in die Tabelle mit einarbeiten.
In VBScript ist das ein Array und in Deinem Fall zweidimensional; ein Array beginn immer bei 0, hier also bei 0, 0, da zweidimensional.
Im o.a. Beispiel hat Deine Tabelle die Dimension
(3, 3) wobei (0, 0) leer ist, (1-3, 0) das Druckermodell und (0, 1-3) den Patronentxp angibt.
Suchst Du jetzt z.B. den Drucker Deskjet 500/550, müßte der irgendwo in Zeile 1 - 3 und in Spalte 0 aufgeführt sein.
Du liest Deine Tabelle in den Speicher, der Drucker -Name steht z.B. in x, die Tabelle als Array in arg. Mit
For i = 1 To UBound(arg)
If arg(i, 0) = x Then
for j = 1 To 3 (UBound ist nur für die erste Dim.)
if arg(i, j) = "X" Then
y = arg(0, j)
End If
Next
End If
Next
kannst du dann zu jedem Drucker die passende Patrone finden.
Um Exel mit VBScript ansprechen zu können, mußt Du genau so wie in Word, die Exel-VBA Befehlsrefernz mit leichten Abänderungen nutzen.
Hast Du in der Exel Tabelle nur Model 1 - ? / A B C .. stehen, solltest du das im Script in einem Array definieren.
MfG maneich
Antwort 5 von Event
Hallo
Wenn Du Deine Tabelle wie nachfolgend änderst,
dann könnte nachfolgender Code das sein was Du suchst.
Private Sub CommandButton1_Click()
Dim zeile&, spalte%, zeilen&, spalten%, info$
Range("A65535").End(xlUp).Select
zeilen = Right(Selection.Address(False, False), Len(Selection.Address(False, False)) - 1)
Range("iv1").End(xlToLeft).Select
spalten = 1 + Mid(Selection.Address(False, False, False), 4, Len(Selection.Address(False, False, False)) - 4)
For zeile = 2 To zeilen
For spalte = 2 To spalten
If Cells(zeile, spalte).Value = "x" Then
info = info & Cells(1, spalte).Value & " passt in " & Cells(zeile, 1).Value & ", "
End If
Next spalte
Next zeile
MsgBox info
End Sub
Gruß
besser kann ich´s nicht
Wenn Du Deine Tabelle wie nachfolgend änderst,
A B C D E
1 Patrone1 Patrone2 Patrone3 Patrone4
2 Model1 x
3 Model2 x
4 Model3 x x
5 Model4 x x x
6 Model5 x
7 Model6 x x
8 Model7 x
9 Model8 x
10 Model9 x
11 Model10 x
12 Model11 x
dann könnte nachfolgender Code das sein was Du suchst.
Private Sub CommandButton1_Click()
Dim zeile&, spalte%, zeilen&, spalten%, info$
Range("A65535").End(xlUp).Select
zeilen = Right(Selection.Address(False, False), Len(Selection.Address(False, False)) - 1)
Range("iv1").End(xlToLeft).Select
spalten = 1 + Mid(Selection.Address(False, False, False), 4, Len(Selection.Address(False, False, False)) - 4)
For zeile = 2 To zeilen
For spalte = 2 To spalten
If Cells(zeile, spalte).Value = "x" Then
info = info & Cells(1, spalte).Value & " passt in " & Cells(zeile, 1).Value & ", "
End If
Next spalte
Next zeile
MsgBox info
End Sub
Gruß
besser kann ich´s nicht
Antwort 6 von Nzer_de
Danke Jungs, super die schnelle Hilfe. Jetzt komm ich weiter...

