Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
- Leviathane
- Stammposter
- Beiträge: 2976
- Registriert: 26.03.2004 00:21
- Wohnort: Blashyrkh
Re: Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
Das ist eine klassische SUMMEWENNS-Formel.
Re: Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
MerciLeviathane hat geschrieben:Das ist eine klassische SUMMEWENNS-Formel.
Ich hatte einen Traum und dieser Traum war wundervoll.
Europacup - Es war ein Auswärtsspiel, in Amsterdam.
Europacup - Es war ein Auswärtsspiel, in Amsterdam.
Re: Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
Summewenn würde ich probieren
Memory, prophecy and fantasy -
the past, the future and the dreaming moment between -
are all one country, living one immortal day.
To know that is wisdom.
To use it is the Art.
the past, the future and the dreaming moment between -
are all one country, living one immortal day.
To know that is wisdom.
To use it is the Art.
- Kaleun Thomsen
- Beiträge: 12092
- Registriert: 22.01.2010 10:50
- Wohnort: CNNWTZ
Re: Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
Lol, was?
Swingtime is good time, good time is better time!
Re: Excel-Hilfe: Daten aus 1 Spalte auf mehrere Spalten aufteilen
Eine schöne Gelegenheit, nach Jahren mal wieder mit VBA zu spielen.*g*
Mit Script/Makro würde es etwa so gehen (unter vereinfachter Annahme, daß in Spalte B nur Ganzzahlen stehen):
Private Type Person
Name As String
Zeit As Integer
End Type
Sub summen()
Dim sh As Worksheet
Dim Personen() As Person
Set sh = ActiveSheet
Dim zeilenGesamt As Integer
zeilenGesamt = sh.UsedRange.Rows.Count
Dim zeileAktuell As Integer
For zeileAktuell = 1 To zeilenGesamt
Dim index As Integer
If (Not Not Personen) <> 0 Then
Dim gefunden As Boolean
gefunden = False
For index = 1 To UBound(Personen)
If sh.Cells(zeileAktuell, 1).Value = Personen(index).Name Then
Dim aktuelleZeit As Integer
aktuelleZeit = sh.Cells(zeileAktuell, 2).Value
Dim aktuelleSumme As Integer
aktuelleSumme = aktuelleZeit + Personen(index).Zeit
Personen(index).Zeit = aktuelleSumme
gefunden = True
End If
Next index
If gefunden = False Then
ReDim Preserve Personen(UBound(Personen) + 1)
Dim neuePerson As Person
neuePerson.Name = sh.Cells(zeileAktuell, 1).Value
neuePerson.Zeit = sh.Cells(zeileAktuell, 2).Value
Personen(UBound(Personen)) = neuePerson
End If
Else
ReDim Personen(1)
Dim erstePerson As Person
erstePerson.Name = sh.Cells(zeileAktuell, 1).Value
erstePerson.Zeit = sh.Cells(zeileAktuell, 2).Value
Personen(1) = erstePerson
End If
Next zeileAktuell
Dim Zeile As Integer
Zeile = 1
Dim indexPerson As Integer
For indexPerson = 1 To UBound(Personen)
sh.Cells(Zeile, 3).Value = Personen(indexPerson).Name
sh.Cells(Zeile, 4).Value = Personen(indexPerson).Zeit
Zeile = Zeile + 1
Next indexPerson
End Sub
Damit wird aus dem
a 8
b 8
a 8
b 8
c 8
d 8
das
a 8 a 16
b 8 b 16
a 8 c 8
b 8 d 8
c 8
d 8
Mit Script/Makro würde es etwa so gehen (unter vereinfachter Annahme, daß in Spalte B nur Ganzzahlen stehen):
Private Type Person
Name As String
Zeit As Integer
End Type
Sub summen()
Dim sh As Worksheet
Dim Personen() As Person
Set sh = ActiveSheet
Dim zeilenGesamt As Integer
zeilenGesamt = sh.UsedRange.Rows.Count
Dim zeileAktuell As Integer
For zeileAktuell = 1 To zeilenGesamt
Dim index As Integer
If (Not Not Personen) <> 0 Then
Dim gefunden As Boolean
gefunden = False
For index = 1 To UBound(Personen)
If sh.Cells(zeileAktuell, 1).Value = Personen(index).Name Then
Dim aktuelleZeit As Integer
aktuelleZeit = sh.Cells(zeileAktuell, 2).Value
Dim aktuelleSumme As Integer
aktuelleSumme = aktuelleZeit + Personen(index).Zeit
Personen(index).Zeit = aktuelleSumme
gefunden = True
End If
Next index
If gefunden = False Then
ReDim Preserve Personen(UBound(Personen) + 1)
Dim neuePerson As Person
neuePerson.Name = sh.Cells(zeileAktuell, 1).Value
neuePerson.Zeit = sh.Cells(zeileAktuell, 2).Value
Personen(UBound(Personen)) = neuePerson
End If
Else
ReDim Personen(1)
Dim erstePerson As Person
erstePerson.Name = sh.Cells(zeileAktuell, 1).Value
erstePerson.Zeit = sh.Cells(zeileAktuell, 2).Value
Personen(1) = erstePerson
End If
Next zeileAktuell
Dim Zeile As Integer
Zeile = 1
Dim indexPerson As Integer
For indexPerson = 1 To UBound(Personen)
sh.Cells(Zeile, 3).Value = Personen(indexPerson).Name
sh.Cells(Zeile, 4).Value = Personen(indexPerson).Zeit
Zeile = Zeile + 1
Next indexPerson
End Sub
Damit wird aus dem
a 8
b 8
a 8
b 8
c 8
d 8
das
a 8 a 16
b 8 b 16
a 8 c 8
b 8 d 8
c 8
d 8