Tach die Damen und Herren, mal schaun ob ich Antwort finde. Ich habe folgendes Problem. Im Excell hab ich nen Haufen Daten in zwei Spalten der FOrm 30 45 30 23 30 58 30 48 30 40 40 43 40 22 40 69 40 49 Jetzt hätte ich gerne eine Funktion mit der ich sagen kann: Wenn in Spalte Ax=30 steht, dann kopiere den Wert aus Bx nachz.B. D0 aufwärts (also wenn er einen dahin kopiert hat soll er hochzählen, also quasi einen Teil der Spalte kopieren). Steht da aber 40 hin, soll er den Wert bei Bx nach E0++ kopieren. GIbt es sowas im Excell?? Besten Dank und schöne Grüße
Hallo, das Stichwort heißt in diesem Fall "SummeWenn". Formel für Zelle D1: "=SUMMEWENN(A:A;"=30";B:B)" Formel für Zelle E1: "=SUMMEWENN(A:A;"=40";B:B)" Im Anhang findest Du ein einfaches Beispiel. Mit freundlichen Grüßen Guido
Huch da hast du mich ja völlig falsch verstanden. Mir gehts um ne sortierung. Ich will von: 30 45 30 23 30 58 30 48 30 40 40 43 40 22 40 69 40 49 zu: 30 & 40 --------- 45 & 43 23 & 22 58 & 69 48 & 49 40 &
Hallo, Icke_Wa schrieb: > Huch da hast du mich ja völlig falsch verstanden. Stimmt. Mit Deinem letzten Beitrag ist mir die Problematik jetzt auch verständlich. Mit freundlichen Grüßen Guido
Hallo ...
... die Lösung die ich anbieten kann ist auf die Schnelle leider nicht
sehr elegant, aber sie funktioniert.
Das vba-Makro sieht dazu so aus (die Zeilen sind praktisch
selbsterklärend:
---------------------- SCHNIPP --------------------8<--------------
Sub TwinSort()
'
' Sortiert die Werte von 2 nebeneinander liegenden Spalten
' in aufsteigender Folge (Zick-Zack)
'
' Makro von Peter Balss - 06.12.2011
'
Dim AnzZeilen As Integer
Dim i As Integer
Dim WertLinks
Dim WertRechts
Dim WertRechtsOben
Dim ErsteZelle
WertLinks = 0
WertRechts = 0
WertRechtsOben = 0
ErsteZelle = "A1" ' Liste beginnt hier auf Zelle "A1"
Range(ErsteZelle).Select
Range(Selection, Selection.End(xlDown)).Select
AnzZeilen = Selection.Rows.Count
For i = 1 To AnzZeilen
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Cells(1, 1), Order1:=xlAscending, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.End(xlToRight).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Cells(1, 2), Order1:=xlAscending, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(Cells(i, 1), Cells(i, 2)).Font.Bold = True
WertLinks = Cells(i, 1).Value
WertRechts = Cells(i, 2).Value
If WertLinks > WertRechts Then
Cells(i, 1).Value = WertRechts
Cells(i, 2).Value = WertLinks
End If
If i > 1 Then
WertRechtsOben = Cells(i - 1, 2).Value
If WertRechtsOben > WertLinks Then
Debug.Print WertLinks
Debug.Print WertRechtsOben
Cells(i - 1, 2).Value = WertLinks
Cells(i, 1).Value = WertRechtsOben
End If
End If
Range(ErsteZelle).Select
Selection(i, 1).Select
Next i
End Sub
---------------------- SCHNAPP -------------------->8--------------
Hallo, anbei noch ein weiterer Ansatz von mir. Das Zauberwort heißt in meinem Fall "Arrayformeln". Eine kurze Einleitung darüber findest Du hier: http://office.microsoft.com/de-de/excel-help/richtlinien-und-beispiele-fur-arrayformeln-HA010228458.aspx Mein Beispiel ist vielleicht nicht die genialste Anwendung dieser Formeln, ich habe es jedoch bewusst so gehalten, dass Du es recht einfach an Deine Bedürfnisse anpassen kannst. Stichwort: "Leichte Wartbarkeit von Code". In den Spalten D und E findest Du die Arrayformeln ohne Fehlerbehandlung. In den Spalten G und H sind die entsprechenden Formeln mit Fehlerbehandlung. Eine kleine "Unschönheit" verbleibt noch. Steht hinter dem Wert 30 oder 40 in Spalte A kein zugehöriger Wert in Spalte B wird der Wert 0 übernommen. Mit freundlichen Grüßen Guido
Hallo, irgendwie wollte die Anhang nicht mit. Daher jetzt im zweiten Anlauf. Mit freundlichen Grüßen Guido
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.