Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Positive Werte einer Zeile auslesen

Positive Werte einer Zeile auslesen
04.08.2014 11:24:01
Johann
Hallo zusammen,
nach langem Suchen finde ich keine Lösung für folgendes Problem.
Ich möchte alle positiven Werte einer Zeile auslesen und nebeneinander schreiben.
Beispiel: Im Sheet Tab1 stehen Werte in der Zeile B2:AZ2 und darunter
0 10 0 0 0 0 0 0 0 0 0 2
20 0 0 0 4600 0 0 0 50 0 0 0
...
Dazwischen Nullen oder #NV. Die Datenreihen haben aber stets die gleiche Länge.
Ziel: In Sheet Tab2 sollen dann beginnend in B2 alle positiven Werte stehen,
also
10 2 nebeneinander, und
20 4600 50 darunter
...
Bisher habe ich nur Lösungen gefunden, wie man der ersten oder den letzten positiven Wert einer Datenreighe findet.
Habt ihr einen Tipp für mich?
Viele Grüße
Johann
PS: Habt ihr dann noch einen Tipp für mich, wie ich jeweils zweimal untereinander die 10 schreibe, dann die Summe aus (10 und 2), also zweimal die 12, dann zweimal die 32 (= Summe aus 12 und 20), dann zweimal 4632 usw.
...Vorarbeit zu einem Treppenchart

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Positive Werte einer Zeile auslesen
04.08.2014 11:43:12
Robert
Hallo Johann,
Das folgende Makro sollte dir die positiven Werte aus "Tab1" wie gewünscht int "Tab2" für jede Zeile nebeneinander schreiben:
Option Explicit Sub Test() Dim intRow, intCol, intLastRow, intLastCol As Integer Dim Quelle, Ziel As Worksheet Set Quelle = Worksheets("Tab1") Set Ziel = Worksheets("Tab2") For intRow = 2 To Quelle.UsedRange.SpecialCells(xlCellTypeLastCell).Row intLastCol = 2 intLastRow = Ziel.UsedRange.SpecialCells(xlCellTypeLastCell).Row For intCol = 2 To Quelle.UsedRange.SpecialCells(xlCellTypeLastCell).Column If Quelle.Cells(intRow, intCol) > 0 Then Ziel.Cells(intLastRow + 1, intLastCol) = Quelle.Cells(intRow, intCol) intLastCol = intLastCol + 1 End If Next intCol Next intRow End Sub ungetestet, daher bitte ich um Feedback
viele Grüße
Robert

Anzeige
Dein Makro läuft nicht durch
04.08.2014 11:49:06
Johann
Hallo Robert,
dein Makro läuft nicht durch.
Es wird nur die 20 in B2 in Tab2 geschrieben.
Beim Debuggen ist die If Schleife markiert. Laufzeitfehler 13, Typen unverträglich.
Könnte man mein Problem nicht auch ohne VBA lösen?
Viele Grüße
Johann

Bitte jemand Anderes für eine non-VBA Lösung!
04.08.2014 12:14:55
Robert
Hallo Johann,
Ja, kann man sicher auch ohne vba lösen.
da bin ich allerdings der Falsche :)
Ich markier das Thema mal wieder als Offen.
Mein Makro schau ich mir später nochmal an und korrigiere den fehler :)
viele Grüße
Robert

Bitte erfüllt, bevor ausgesprochen ;-) owT
04.08.2014 12:18:56
neopa
Gruß Werner
.. , - ...

(MATRIX-)Formellösung ...
04.08.2014 12:04:29
neopa
Hallo Johann,
... Formel nach rechts und unten kopieren:
 ABCD
1102  
220460050 
3109  
4    

Formeln der Tabelle
ZelleFormel
A1{=WENN(SPALTE(A1)>ANZAHL(WENN(('Tab1'!$A1:$Z1>0); 'Tab1'!$A1:$Z1)); "";INDEX('Tab1'!$A1:$Z1;KKLEINSTE(WENN(('Tab1'!$A1:$Z1>0)*ISTZAHL('Tab1'!$A1:$Z1); SPALTE($A1:$Z1)); SPALTE(A1))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


 ABCDEFGHIJKLM
10100000000002 
220000460000050000 
310#NV0000090000 
4             


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
AW: (MATRIX-)Formellösung ...
04.08.2014 14:02:39
Johann
Hallo Werner,
vielen Dank für die Formel!!!
Wahrscheinlich einfacher ein Atom zu spalten als darauf zu kommen...:-D
Kurzes Feedback:
Funktioniert super für dein Beispiel, allerdings nur mit Nullen und nicht mit #NV in den Zellen - macht nichts - könnte ich anpassen.
Ich habe aber ein Problem deine Formel auf meine Datenreihen anzuwenden.
Meine Daten stehen in Tab1!B2:AZ2. Ich verwende deine Formel in Tab2!B2, entsprechend abgewandelt:
{= WENN(SPALTE(B2)>ANZAHL(WENN(('Tab1'!$B2:$AZ2>0); 'Tab1'!$B2:$AZ2)); ""; INDEX('Tab1'!$B2:$AZ2;KKLEINSTE(WENN(('Tab1'!$B2:$AZ2>0)*ISTZAHL('Tab1'!$B2:$AZ2); SPALTE($B2:$AZ2)); SPALTE(B2)))) }
Tab2!B2 bleibt leer
Die meisten Zellen daneben und darunter auch.
Was mache ich verkehrt? Liegt es möglicherweise daran, dass sich hinter den Daten in Tab1 Formeln verbergen?

Anzeige
falsche Formel einkopiert
04.08.2014 17:07:52
neopa
Hallo Johann,
... ich hatte die eingestellte Formel in A1 und erst in Zeile 3 bemerkt, dass diese bei #NV nicht ausreichend ist. Hatte diese aber dann nur in A3 korrigiert und nicht nach A1 zurückkopiert und somit heute Mittag eine unzureichende eingestellt. Sorry.
Die Formel die beides richtig berücksichtigt ist nachfolgende (Beachte insbesondere auch den untenstehenden Hinweis, wie die Formel abzuschließen ist):
Tab2

 ABCD
1102  
220460050 
3109  
4    

Formeln der Tabelle
ZelleFormel
A1{=WENN(SPALTE(A1)>ANZAHL(WENN(('Tab1'!$A1:$Z1>0); 'Tab1'!$A1:$Z1)); "";INDEX('Tab1'!$A1:$Z1;KKLEINSTE(WENN(ISTZAHL(1/('Tab1'!$A1:$Z1>0)); SPALTE($A1:$Z1)); SPALTE(A1))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Tab1

 ABCDEFGHIJKL
10100#NV00000002
220000460000050000
310#NV0000090000


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
Super, Vielen Dank!! nfm
05.08.2014 10:09:28
Johann
Viele Grüße
Johann

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige