Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
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

VBA Spalten berechnen mit variablen Rang

VBA Spalten berechnen mit variablen Rang
04.03.2020 12:48:50
Mo
Hallo Zusammen,
da ich mit meinen VBA-Kenntnissen absolut nicht weiterkomme, muss ich jetzt hier doch einmal anfragen, vielleicht habt Ihr ja eine Idee.
Ich habe eine Excel-Tabelle mit Werten 0-1. Beispieltabelle (Tabellenblatt "Rohdaten")anbei.
https://www.herber.de/bbs/user/135604.xlsx
Die Überschrift beinhaltet die Texte TWO, THREE und GLOBAL und PROZENT, wobei vor jeder Spalte GLOBAL eine Spalte PROZENT steht, die ich mit einem VBA-Code berechnen lassen will.
Im Ergebnis soll dann jeweils die Excel-Formel in der Tabelle stehen, wie in der Beispiel-Datei, so dass bei Änderungen, der Wert aktualisiert wird (Tabellenblatt "Ergebnis mit EXCEL-Formel")
Es soll immer die erreichte Prozentzahl angegeben werden bezogen auf dem Bereich, der zwischen den GLOBAL-Spalten steht bzw. bei der ersten PROZENT-Spalte Bezug auf den Bereich bis einschließlich Spalte B.
Da ich mehrere solcher Tabellen habe und GLOBAL nicht immer an der gleichen Stelle steht, muß der Code variabel sein. Startpunkt ist bei allen Tabellen Spalte B.
Jetzt habe ich mal ein Skript geschrieben s.u. , damit wird mir erst einmal eine Summe berechnet, allerdings ist das Ergebnis nur bei der ersten Spalte korrekt und es steht auch nur der Wert drin und nicht die Formel.
Ich hoffe, Ihr könnt mir weiter helfen,
viele Grüße
Acki
Sub Prozente()
Dim iSpalte As Integer
Dim iZeile As Integer
Dim Bereich As Range
For iSpalte = 2 To 256
For iZeile = 2 To 300
Set Bereich = Range(Cells(iZeile, 2), Cells(iZeile, iSpalte - 1))
If Cells(1, iSpalte) = "PROZENT" And Cells(iZeile, 1)  "" Then
Cells(iZeile, iSpalte) = Application.WorksheetFunction.Sum(Bereich)
End If
Next iZeile
Next iSpalte
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Spalten berechnen mit variablen Rang
04.03.2020 16:20:55
Hajo_Zi
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern und den Code einzufügen.
Ich führe keine Liste unter welchem Dateinamen ich die Datei aus dem Forum gespeichert habe.
Der Name steht ja im Beitrag.

AW: VBA Spalten berechnen mit variablen Rang
05.03.2020 09:03:16
Mo
Hallo Hajo,
sorry mein Fehler - ich bin neu im Forum.
Anbei der Link für die xlsm-Datei.
https://www.herber.de/bbs/user/135629.xlsm
Einen Schritt weiter bin ich schon. Die Formel steht jetzt drin, allerdings nur für die erste GLOBAL-Spalte korrekt. Die anderen GLOBAL-Spalten müssen noch mit dem richtigen Bereich ausgefüllt werden - jeweils bis zur letzten Spalte "GLOBAL".
Irgendwie muss da ein Zähler eingebaut werden, ich komme da nur nicht weiter.
Hat jemand eine Idee?
Viele Grüße
Acki
Anzeige
AW: VBA Spalten berechnen mit variablen Rang
05.03.2020 16:51:00
Hajo_Zi

Option Explicit
Sub Prozente()
Dim iSpalte As Integer
Dim iZeile As Integer
Dim Bereich As Range
Dim Zaehler1 As Integer     ' Anzahl der Spalten
Dim Zaehler2 As Integer     ' Letzte Spalte
Dim Endwert As Integer
Zaehler1 = 0
Zaehler2 = 1
For iZeile = 2 To 300
For iSpalte = 2 To 256
If Cells(1, iSpalte) = "GLOBAL" Then
Zaehler2 = iSpalte + 1
ElseIf Cells(1, iSpalte) = "TWO" Or Cells(1, iSpalte) = "THREE" Then
Zaehler1 = Zaehler1 + 1
Else
Cells(iZeile, iSpalte).Formula = _
"= Round(1/" & Zaehler1 & " * 100* Sum(" & Range(Cells(iZeile, iSpalte - _
Zaehler1), Cells(iZeile, iSpalte - 1)).Address(0, 0) & "),2)"
Zaehler1 = 0
Zaehler2 = iSpalte + 1
End If
Next iSpalte
Next iZeile
'    Endwert = Zaehler1
'    For iSpalte = 2 To 256
'            'Set Bereich = Range(Cells(iZeile, 2), Cells(iZeile, iSpalte - 1))
'            If Cells(1, iSpalte) = "PROZENT" And Cells(iZeile, 1)  "" Then
'                Cells(iZeile, iSpalte).Formula = _
'                    "= Round(1/" & Zaehler1 & " * 100* Sum(" & Range(Cells(iZeile, 2), Cells( _
iZeile, iSpalte - 1)).Address(0, 0) & "),2)"
'            End If
'        Next iZeile
'    Next iSpalte
'    For iSpalte = 2 + Endwert To 256
'        Zaehler1 = 0
'        If Cells(1, iSpalte) = "TWO" Or Cells(1, iSpalte) = "THREE" Then
'            Zaehler1 = Zaehler1 + 1
'        Else
'            If Cells(1, iSpalte) = "GLOBAL" Then
'                Exit For
'            End If
'        End If
'    Next iSpalte
'    Endwert = Zaehler1
End Sub
Gruß Hajo
Anzeige
AW: VBA Spalten berechnen mit variablen Rang
06.03.2020 09:50:37
Mo
Hallo Hajo,
großen Dank !!!
Code passt wunderbar.
Viele Grüße
Acki

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige