Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Azahl Elemente Array und Summe
#1
Hallo zusammen,

Ich sammele Elemente in einem Array und möchte sie als erstes zählen und dann summieren bzw. dann noch einen Durchschnitt bilden.
Unten ist mein gesamter Code.

Was darin nicht funktioniert:
1. im Array unter myLevels1 werden 3 Elemente angezeigt (2, 2, 1), was auch richtig ist, aber unter iCount kommt nur 1.
2. Die Summe ist zum Schluss 0, müsste aber 5 sein

Wo liegt mein Fehler? Vielleicht etwas falsch deklarierert ?

Danke!

CODE:

Dim myAdresseName
Dim mySpalteName As String
Dim myZeileName As String
Dim myRngSkill As Range
Dim myRngMA As Range
Dim mySkill As String
Dim myLevelLang As String
Dim myLevel As Double
Dim myWorkbook As String
Dim myLevels1 As Variant
Dim myLevels As Variant
Dim mySkills1 As Variant
Dim mySkills As Variant
Dim myLevelRng As Range
On Error GoTo Errorhandler

myWorkbook = Application.ActiveWorkbook.Name

For Each myRngSkill In Range("A7:A8")
   For Each myRngMA In Range("G6:J6")
  
      If myRngSkill.Value = "x" And myRngMA.Value = "x" Then
     
  
        myRngSkill.Activate
        mySkill = myRngSkill.Offset(0, 1).Value
       
        myAdresseName = ActiveCell.AddressLocal(False, False)
        myZeileName = Mid(myAdresseName, 2, 2)
       
       
        myRngMA.Activate
        myAdresseName = ActiveCell.AddressLocal(False, False)
        mySpalteName = Mid(myAdresseName, 1, 1)
       
        Set myLevelRng = Range(mySpalteName & myZeileName)
        myLevelRng.Activate
       
        myLevelLang = ActiveCell.Value
            If myLevelRng <> "" Then
                  myLevel = Right(myLevelLang, 1)
                  myLevels1 = myLevels1 & ", " & myLevel
            End If
       End If
   Next
  
       myLevels1 = Right(myLevels1, Len(myLevels1) - 2)
       myLevels = Array(myLevels1)
              
       iCount = UBound(myLevels, 1) - LBound(myLevels, 1) + 1
        mySkills1 = mySkills1 & ", " & mySkill
        mySkills = Array(mySkills1)
   
        Range("AA" & myZeileName).Activate
       
        myKosten = 0
       
Dim x
Dim total
x = myLevels
total = WorksheetFunction.Sum(x)
        ActiveCell.FormulaR1C1 = "=" & total
   
Next

...
Antworten Top
#2
Verwende Arrays:


Code:
Sub M_snb()
  sn=[A7:B8]
  sp=[G6:J6]

  for j=1 to ubound(sn)
    for jj= 1 to ubound(sp,2)
      if sn(j,1)&sp(1,jj)="xx" then ......
   next
 next
End sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Teste ich gleich mal, Danke.

Kann ich dann die einzelnen Elemente eines Arrays in Tabelle2 alle einzeln in die Zellen der Spalte B7 bix Bx ( x = Anzahl Elemente ) schreiben?

Also es sind z.B. 3 Elemente. Das erste wird in B7 geschrieben, das zweite in B8 und das dritte in B9 ?

Ich schaffe es immer nur, dass alles in eine Zelle gekippt wird.

Danke!!
Antworten Top
#4
Hallöchen,

wenn Du einzelne Elemente eines Arrays einzeln in Zellen schreiben willst, ist das doch easy. Im Prinzip

Range("B7") = arrWerte(0)
Range("B8") = arrWerte(1)
Range("B9") = arrWerte(2)

Oder Du nimmst eine Schleife dazu, müsstest den Schleifenzähler ggf. für die Zelladresse verrechnen, z.B.

For iCnt = 0 to Ubound(arrWerte)
Range("B" & iCnt+7) = arrWerte(iCnt)
Next

Würde übrigens auch in einem Rutsch gehen. Schaue Dir mal in der Überwachung ein transponiertes Array an, im Prinzip WorksheetFunction.Transpose(arrWerte)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste