Eine Frage an die Excel Profis

Dudovtiz

New member
Themenstarter
Registriert
4 Dez. 2009
Beiträge
188
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
 
Zuletzt bearbeitet von einem Moderator:
Eine eingebaute Funktion denke ich nicht, aber mit einem VBA-Makro solltest du das lösen können. Du musst dich allerdings schon ein wenig in das Thema einlesen.
 
Also momentan arbeite ich noch mit ner Wenn Abfrage, aber das muss man dann halt für jede Zeile neu machen und ist recht doof.

Ne Abfrage a la Wenn(A10=30;B10;WENN(A10=40;C10;)) funktioniert ja schon nicht. Werde mal nach den VBA Markos schaun

schau, schau, schau

hm das klingt ja erstmal alles ganz gut, aber dann müsste ich ja was schreiben in der Art von

if(Bx == 10){
Dy = Cx;
x++
y++
}

jetzt mal in c gedacht. Kann mir das jemand in VBA umcoden :P
 
Zuletzt bearbeitet:
Hallo
Bin zwar sicher kein Excel-Profi, aber das Problem interessiert mich aus privater Neugierde.
"(also wenn er einen dahin kopiert hat soll er hochzählen, also quasi einen Teil der Spalte kopieren)" verstehe ich nicht.
Mit einer WENN-Funktion kann man sich doch den Wert der Spalte B in, sagen wir 'mal, die Spalte C kopieren.
Und für den Wert "40" eine WENN-Funktion in der Spalte D. "=WENN(A1=40;B1;0)"
Und die jeweilige Summe der Spalte (wenn ich "hochzählen" so richtig interpretiere) kommt ans Spaltenende.
Vielleicht hilft auch die Funktion SUMMEWENN.

M.f.G.
HWD
 
Zuletzt bearbeitet:
Nene das hochzaehlen soll er machen damit er den naechsten Wert in die naechste Zeile schreibt. Also quasi den ersten Wert nach B1, den naechsten nach B2. Um das Beispiel von oben nochmal aufzugreifen:
VOrher:
30 45
30 23
30 58
30 48
30 40
40 43
40 22
40 69
40 49

gewünschtes Resultat:

30 40 50 60 ....
45 43 .
23 22 .
58 69 .
48 49
40

Deine Wenn Funktion hab ich jetzt auch genutzt. Nur kann ich damit halt nicht alles sofort richtig einordnen, weil ich ihm halt nicht sagen kann "zaehl mal jetzt nur Spalte B hoch und wenn du dann von den 30ern auf die 40er kommst, springe an C0 und zaehle dann wieder hoch ..." kann man das verstehen? :P
Denke das Beispiel zeigt es aber auch ganz gut.
 
Zuletzt bearbeitet:
Achso. Gerechnet wird also garnix. Die Werte werden nur sortiert und umgestellt.
Alle 30er in die erste Spalte, alle 40er in die zweite Spalte...
 
Hi, ich habe dein Problem so verstanden, das wenn Spalte A = 30 dann kopiere den Wert aus Spalte B nach Spalte D, wenn in A 40 steht dann nach E.
Folgendes Makro macht das:
*******************************
Sub Sortieren()
'Sortieren aus Spalte A&B nach D&E ...
'wenn A=30 dann in Spalte D kopieren uhnd wenn 40 dann in Spalte E koppen.
'Viel Spaß ....
Dim WertB As Integer
Dim Kenner As Boolean
Dim i As Integer

'Schleife
For i = 2 To 1000
WertB = Cells(i, 2).Value
If IsEmpty(Cells(i, 1).Value) Then Exit For
If Cells(i, 1).Value = 30 Then
Kenner = True '30?
Else
Kenner = False 'oder 40?
End If
If Kenner Then
Cells(i, 4).Value = WertB 'wenn 30 dann nach Spalte D in aktueller Zeile
Else
Cells(i, 5).Value = WertB 'wenn 40 dann nach Spalte E in aktueller Zeile
End If
Next i
MsgBox "Ende"
End Sub
*********************************
Hier bis 1000 Zeile mal in eine For Next Schleife gepackt.
Vielleicht hilft es dir, viel Spaß damit.

Gruß
Frank
 
Zuletzt bearbeitet:
**********************Makro2****
Sub Sortieren2()
'Sortieren aus Spalte A&B nach D&E&F&G ...
'wenn A=30 dann in Spalte D kopieren uhnd wenn 40 dann in Spalte E koppen.
'Viel Spaß ....
Dim WertA As Integer
Dim WertB As Integer
Dim ErgbenisSpalte As Integer
Dim i As Integer

'Schleife
For i = 2 To 1000
WertA = Cells(i, 1).Value
WertB = Cells(i, 2).Value
If WertA = 0 Then Exit For
'Ergebnisspalte aus Wert A berechnen
ErgbenisSpalte = (WertA / 10) + 1
Cells(i, ErgbenisSpalte).Value = WertB 'wenn 30 dann nach Spalte D in aktueller Zeile
Next i
MsgBox "Ende"
End Sub
***********************************
Mit Makro2 kannst du für beliebige Werte in A diese in die Spalte D,E,F,G, aufsteigend sortieren.
In dem Makro werden die Ergbnisspalten nicht "aufgefüllt", sondern immer in die Zeile mit dem Vorgabewert geschrieben. In deiner Ergebnisspalte entstehen also Lücken. Wenn das nicht sein sol, dann muß die Routine um einen Zeilenzähler ergänzt werden.
 
Jau das schaut gut aus. Habe das Problem jetzt manuell gelöst, aber sobald ich mal ne Minute frei habe, werd ich dein Makro nochmal ausprobieren.
Besten Dank!!!
 
Hi, gerne gemacht. Hoffe du hast die Aufgabe öfter, dann kann so ein Makro einem das Leben schon erleichtern.
 
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben