Supportnet Computer
Planet of Tech

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ß

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

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.

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

Antwort 5 von Event

Hallo

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...