# Inhalt aus mehreren Zeilen auslesen und addieren?



## ACIDJUNKIE85 (17. Mai 2007)

Hallo ich möchte gerne zahlen werte aus mehreren Zeilen auslesen und zusammen rechnen um diese dann in eine neue Zeile als z.B. Gesammtkosten  anzeigen lassen. Wie kann ich das realisieren? Wäre schön wenn mir jemand das sagen könnte da ich ein Neuling in VBA bin und die Microsoft Hilfe mir nicht wirklich weiter hilft. Danke


----------



## DrSoong (17. Mai 2007)

Excel? Da kannst du ja in der Zelle selbst eine Summenformel eingeben und dort das Ergebnis anzeigen.

In VBA sprichst du über *Cells(Row, Column)* eine Zelle an, einfach alle einlesen und addieren.


Der Doc!


----------



## maybebaby (25. Mai 2007)

Haaaallloo...

ich hab genau das gleiche problem ich hab ein kleines programmchen in visual basic also von excel geschrieben und ich möchte nun zellen einlesen dass ich diese addieren kann.
wie lautet denn die genaue syntax, mit dem Cells(Row, Column) kann ich leider nix anfangen... 

bin noch totaler anfänger..  sorrrry... würd mich über hilfe freun !!


also das muss dann so sein, dass ich die zellen durchlaufen kann mit einem laufindex, weil ich alle abfragen muss und je nachdem was drinne steht funktionen ausführen...


ich bin verzweifelt mein hirn ist gekocht 

danke schonmal, ich hoff es kann mir jemand helfen...


----------



## DrSoong (25. Mai 2007)

_Cells_ ist nur eine Eigenschaft des *Worksheets*-Objekts, du musst natürlich das dementsprechende Sheet angeben. Außerdem hat Cells ja auch Eigenschaften, zum auslesen von Werten die _Value_-Eigenschaft.


Der Doc!


----------



## maybebaby (25. Mai 2007)

Hey Doc,
Danke erstmal...
ich kann die aktuelle zelle makieren und auslesen das ist kein problem. 

Aber das bringt mir nichts weil ich muss nicht nur eine Zelle auslesen, sondern ALLE zellen in dem sheet überprüfen und je nach dem was drinne steht verschiedene funktionen machen.

weisst du wie ich das mein ?

soll ich dir das excel sheet als beispiel zeigen oder verstehst du mich ...

gaa voll kompliziert...

also danke schonmal und liebe grüße,
maybebaby


----------



## DrSoong (26. Mai 2007)

Du kannst das ganze Sheet ja in einer Schleife durchgehen und auslesen (markieren ist nicht notwendig), würde so aussehen:

```
With ActiveSheet
 For xRows = 1 To 10 '10 Zeilen
  For xCols = 1 To 10 '10 Spalten
   sWert = .Cells(xRows, xCols)
   'Hier kannst du noch Berechnungen durchführen
  Next xCols
 Next xRows
End With
```


Der Doc!


----------



## maybebaby (26. Mai 2007)

Hallo,

danke für die schnelle Antwort du bist echt mein lebensretter ich war da schon einen ganzen Tag auf arbeit dran gesessen und bin ver Verzweiflung nahe... 
jetzt kann ich die Zellen durchlaufen, das ist schonmal super aber leider nochnicht die vollständige lösung meines problems.
innendrinnen möchte ich eine if abfrage machen und nun meine erste frage: mit was deklariere ich die Variable, da in den Zellen sowohl Wörter als auch Zahlen stehen können ?

und dann meine nächste Frage: die tabelle ist so aufgabaut..:

MA         Bereich           Projekt   Featuregruppe   Auslastung
Wagner 	Proj. Regional	  P6	         F10	            20%
Wagner	Proj. Regional    GR	        allg	             20%

Ich frage nun das Projekt ab und immer wenn zB P6 dort steht möchte ich die Prozentzahlen addieren.kann ich irgendwie den Spaltennamen abfragen? 
das würde es um einiges vereinfachen, dann könnte ich gezielt abfragen weisst du wie ich mein ?



Hab ich das richtig verstanden ist sWert dann der Inhalt der Zelle die wir gerade durchlaufen ?
Weil den brauch ich ja....  Oder ist das nur der Index ?

sorry dass ich soviele dumme fragen stell aber ich hab mir vorgestern nur ein buch zu visual durchgelesen und dann losgelegt... grrr

danke für deine geduld schonmal


----------



## DrSoong (26. Mai 2007)

Nein, stimmt schon, sWert ist der Inhalt der Zelle, die gerade durchlaufen wird.

Um festzustellen, ob der Inhalt einer Variable eine Zahl ist, benutzt du die Funktion *IsNumeric()*. Wenn der Inhalt eine Zahl ist, kriegst du _True_ zurück, ansonsten _False_.

Wenn du eine Variable ohne Typ deklarierst,

```
Dim sWert
'Vergleiche: Dim sWert As Integer -> Integer-Variable, Wertebereich -32768 - 32767, nur Zahlen
```
kriegst du eine sogenannte _Variant_-Variable zurück. Diese kann alle Typen aufnehmen.

Wenn du ein Blatt so wie du gerade beschrieben hast hast, ist es sowieso besser, wenn du in der Schleife nur die Zeilen durchgehst und die Spalten separat abfragst. So kannst du die einzelnen gewünschten Zellen abfragen, sie kombinieren und die Ergebnisse schreiben.

Stell doch mal eine Tabelle mit Dummydaten hoch, so wie sie aussehen soll bzw. du dir das vorstellst. Du kannst in Excel über _Einfügen - Kommentar_ einzelne Zellen kommentieren, damit man sich was besser vorstellen kann.


Der Doc!


----------



## maybebaby (27. Mai 2007)

Hallo 

kann ich denn die spalten direkt abfragen ? oder muss ich die zeile durchlaufen bis ich bei der spalte bin in die ich will... mir den index merken und dann in die 2te schleife gehen um die spalte nach unten abzufragen ?

ich möchte quasi erst den namen des mitarbeiters haben, dann dazu das projekt und dann zuwieviel % er mit diesem projekt ausgelastet ist. so soll es aussehen:

zB

name      projekt           feauregruppe         auslastung

so soll mein erarbeitetes excel sheet aussehen und das soll einfach in dem nächsten tabellenblatt nach meiner liste aus der ich diese daten berechne sein.



erfreulicherweise konnte ich sonst soweit alles lösen.. 

ich merke mir die spalte und die zeile aus der ich was addieren möchte, was wie folgt aussieht:

  For xRows = 1 To 4 'Anzahl Zeilen
        For xCols = 1 To 17 'Anzahl Spalten
             sWert = .Cells(xRows, xCols)
                If sWert = "P1" Then
                    Zeile = z
                    Spalte = 5
                    Do While Spalte < 17
                        temp = .Cells(Zeile, Spalte)       '?wie greife ich auf die zelle zu, deren Zeile und Spalte ich weiss ?
                        MsgBox ("Temp : " & temp)
                        ergebnis = ergebnis + temp
                        MsgBox ("ergebnis lautet : " & ergebnis)
                        Spalte = Spalte + 3
                    Loop
                    'Dreisatz um Prozentsatz pro Woche zu berechnen :
                    prozentsatzwoche = 100 / 500 * ergebnis
                    MsgBox ("Die Auslastung betraegt " & prozentsatzwoche)
                End If
                s = s + 1
        Next xCols
        z = z + 1
   Next xRows



nun würde ich in temp gerne den inhalt der zelle schreiben, von der ich mir spalte und zeile gemerkt hab... kannst du mir da bitte nochmal helfen? an dieser stelle funktioniert es quasi nicht :  temp = .Cells(Zeile, Spalte) 
weil ich mit dieser zelle dann rechnen muss, ich muss ihren inhalt quasi addieren...

liebe grüße,
maybebaby


----------



## maybebaby (31. Mai 2007)

kannst du mir nicht helfen ?

ich bekomme es nicht hin direkt auf eine zelle zuzugreifen...


----------



## Ein_Freund (31. Mai 2007)

Hallo,

ich verstehe Dein Problem nicht. Du greifst doch schon auf die entsprechende Zelle zu mit temp = .Cells(Zeile, Spalte).

Gruß


----------



## maybebaby (31. Mai 2007)

ahhh jetzt versteh ich was du meinst.

also mein problem ist dass ich auf eine zelle zugreifen muss deren spalte und zeile ich in die variablen spalte und zeile geschrieben hab.
ich kenn aber die syntax dafür nicht.

temp = .Cells(Zeile, Spalte)

funktioniert nicht, da schreibt er nichts in temp rein.


----------



## maybebaby (31. Mai 2007)

ich habe es noch mit zahlen versucht um es zu testen, quasi

zB
temp = .Cells(3, 5 )

und dann war temp auch leer. deshalb dachte ich, dass die syntax falsch sein muss... verstehst du mein problem ?


----------



## Alex F. (31. Mai 2007)

```
temp = .Cells(3, 5 ).value
```

oder wolltest du das Tag der zelle in deine Temp laden?

Grüsse bb

PS: Manchmal bietet es sich an sich nicht auf die Default Properties zu verlassen.


----------



## maybebaby (31. Mai 2007)

okay ich werde das heute abend testen ! Vielen Dank für deine Hilfe erstmal. Ich schreib dann heute Abend hier rein, ob es geklappt hat..

du hast mich hoffentlich vor der Verzweifelung gerettet.

bis später  DANKE

;-)


----------



## maybebaby (31. Mai 2007)

hat sich erledigt, kleiner fehler meinerseits sooooooorry


aber mal ne andre frage hätte ich nen extra thread eröffnen müssen für mein thema ich dachte hier läuft das so dass ich was ähnliches such und dann einfach dazu schreib ?
will mich natürlich nich falsch verhalten tut mir leid 
und wie eröffne ich so ein neuen thread ? und ein thread is einfach nur ein thema oder ?

liebe grüße,
maybebaby


----------



## maybebaby (2. Juni 2007)

es läuft super danke !!


----------

