PDA

Vollständige Version anzeigen : Excel2003/VBA (Schreibe gerade Zahlen nach rechts + ungerade Zahlen nach links) ???


Angelina1990
14.07.2014, 07:29
hallo,

ich habe hier eine Mappe.
Es gibt 3 Reihen á 16 Zahlen.
Welche Zahl gerade oder ungerade ist habe ich schon eingefügt.

Meine Bitte nun:

Die gerade Zahlen (im Beispiel gelb) sollen nach rechts in die jeweilige
Reihe geschrieben werden.

Die ungeraden Zahlen (im Beispiel grün) sollen nach links in die jeweilige
Reihe geschrieben werden.


Könnte bitte jemand hierzu eine Lösung bereitstellen?

Vorab vielen lieben Dank für eure Zeit und Mühe

LG
Angelina

aloys78
14.07.2014, 09:06
Hallo Angelina,

mein Vorschlag
Option Explicit

Private Sub CommandButton1_Click()
Dim r As Long 'Zeilen# Zahlenblock
Dim c As Long 'Spalten# Zahlenblock
Dim rs As Long 'Zeilen# linker oberer Eckpunkt
Dim cs As Long 'Spalten# linker oberer Eckpunkt
Dim s As Long 'Spalten# Ergabnis-Anzeige
Const EckPunkt As String = "BS79" '<--- ggf anpassen

'Koordinaten des linken oberen Eckpunktes
rs = Range(EckPunkt).Row
cs = Range(EckPunkt).Column

'alte Auswertung löschen
Range(Cells(rs, cs - 16), Cells(rs + 6, cs - 1)).ClearContents
Range(Cells(rs, cs + 16), Cells(rs + 6, cs + 31)).ClearContents

'gerade Zahlen verteilen
For r = rs To rs + 6 Step 3
s = cs + 15
For c = cs To cs + 15
If Cells(r, c) Mod 2 = 0 Then
s = s + 1
Cells(r, s) = Cells(r, c)
End If
Next c
Next r

'ungerade Zahlen verteilen
For r = rs To rs + 6 Step 3
s = cs
For c = cs To cs + 15
If Cells(r, c) Mod 2 <> 0 Then
s = s - 1
Cells(r, s) = Cells(r, c)
End If
Next c
Next r
End Sub


Gruß
Aloys

Angelina1990
14.07.2014, 09:28
hallo aloys,

es könnte wahrhaftig nicht besser gelöst sein :top: :top: :top:


:winner:


Danke für deine große Hilfe
danke für deine Zeit und Mühe

LG
Angelina

EarlFred
14.07.2014, 09:31
Hallo Angelina,

aus dem Muster entnehme ich, dass immer genau 8 Zahlen links und 8 rechts stehen.

Als Formellösung:

[BK79:BR79]:{=KGRÖSSTE(REST($BS79:$CH79;2)*($BS79:$CH79);SPALTE($A:$H))}
[CI79:CP79]:{=KKLEINSTE(WENN(REST($BS79:$CH79+1;2);($BS79:$CH79));SPALTE($A:$H))}

Für Formel 1:
- Formel ohne die geschweiften Klammern kopieren (Strg+C):
=KGRÖSSTE(REST($BS79:$CH79;2)*($BS79:$CH79);SPALTE($A:$H))
- Bereich BK79:BR79 markieren
- Mit Taste F2 in den Bearbeitungsmodus
- Formel einfügen (Strg+V)
- Eingabe mit Strg+Shift+Enter abschließen (Matrixformel)

Für Formel 2 dann analog.

Grüße
EarlFred

Angelina1990
14.07.2014, 11:45
hallo EarlFred


danke auch dir für deine Zeit und Mühe

aus dem Muster entnehme ich, dass immer genau 8 Zahlen links und 8 rechts stehen.

Nein dies ist nicht der Fall.

Die Lösung von aloys78 hat wunderbar funktioniert.


Trotzdem nochmals danke auch an dich

LG
Angelina