Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Nummernzuordnung
#1
Hallo zusammen,
ich bin neu hier und verzweifelt, da ich mit meinem Problem nicht mehr weiter komme...ich möchte gerne folgendes tun und zwar immer den Namen an die "1" verschieben. Das funktioniert zwar jetzt schon mit dem Makro, aber in der falschen Spalte, denn das sollte in Spalte A alles bleiben und nicht in die Spalte E verschieben, dennoch dynamisch sein...egal in welcher Zelle in Spalte A ich es dann starte. Ich habe mal ein Beispiel angefügt wie ich es meine und auch mal das Makro. Da meine Kenntnisse sehr dürftig sind muss ich wohl öfters nachfragen Confused .

Vielen Dank für eure Hilfe
LG Jackie

Code:
Sub los()
Dim Zelle As Range
Dim i As Long
For Each Zelle In Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns("D"))
   If Zelle = 1 Then
       i = i + 1
       Zelle.Offset(0, 1) = ActiveSheet.Cells(i, "A")
   End If
Next Zelle
End Sub
Antworten Top
#2
Hallo Jackie,

schreib statt

Code:
Zelle.Offset(0, 1) = ActiveSheet.Cells(i, "A")
einfach

Code:
Zelle.Offset(0, -3) = ActiveSheet.Cells(i, "A")
denn du möchtest ja von der Ausgangszelle (in Spalte D) um 3 Spalten nach links gehen. Mit Offset(0, 1) gehst du um eine Spalte nach rechts.

Und mit
Code:
ActiveSheet.Cells.ClearContents
löschst du den Namen gleichzeitig von oben weg.
Schöne Grüße
Berni
Antworten Top
#3
Hallo Berni,
das werde ich mal ausprobieren...
LG Jackie

Das hat schon mal funktioniert, aber wenn ich
Code:
ActiveSheet.Cells.ClearContents

eingebe dann ist alles weg Huh  was habe ich da falsch gemacht?
Antworten Top
#4
Hallo

du hast NICHTS falsch gemacht, sondern schlicht und einfach im Code von Berni einen eklatanter Fehler NICHT gesehen, wie er jedem Ratgeber unabsichtlich passieren kann! Schau ihn dir bitte genau an, dann lernst und verstehst du selbst die Befehls Sprache von VBA.
ActiveSheet.Cells.ClearContents

ActiveSheet erklaert sich von selbst, das aktive Blatt. ClearContents erklart sich auch von selbst: "Lösche den Inhalt" im angegebenen Bereich.  Cells bezieht sich auf das ganze Blatt, auf alle Zellen!  Muss ich weiter erklaeren, oder kombinierst du selbst was nach dem Makro Start dann PASSİERT?!!  Der Code tut nur das was er soll!  

Ich rate dringend davon ab die Namen in Spalte A aufzulisten, denn wenn die Liste zu lang ist überschreibst du dir selbst dort die Namen wo eine "1" steht!! Das ist nicht sinnvoll!  Die Liste löschen kannst du so:

mfg  Gast 123

Code:
Sub los()
Dim Zelle As Range
Dim i As Long
For Each Zelle In Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns("D"))
   If Zelle = 1 Then
       i = i + 1
       Zelle.Offset(0, -3) = ActiveSheet.Cells(i, "A")
   End If
Next Zelle
'Spalte A löschen
ActiveSheet.Range("A2").Resize(i - 1, 1).ClearContents
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Käpt'n Blaubär
Antworten Top
#5
Hallo Gast,

Zitat:ActiveSheet.Cells.ClearContents

oh weh, ... das habe ich auch, trotz Nasenfahrrad, übersehen. Peinlich,  ... peinlich, ... peinlich.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6
Die Namen in F1:F5

In A1:
PHP-Code:
=IFERROR(INDEX($F$1:$F$5;COUNTIF($D$1:$D1;1)/(D1=1));""

Durchziehen bis A40
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Uiuiui, Asche auf mein Haupt! Confused
Schöne Grüße
Berni
Antworten Top
#8
Stimmt, danke für den Hinweis. Leider hat sich mit dem Code ein neues Problem aufgetan, ich muss nämlich bei der zweiten Liste die Positionen verändern - und somit funktioniert der Code dann nicht mehr.
Es muss ab Zeile 8 beginnen, demnach kann er es jetzt so nicht mehr. Könntet ihr bitte hier nochmal nachschauen??
Antworten Top
#9
Schau mal: https://www.clever-excel-forum.de/Thread...#pid165281
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Hallo

ich habe mir erlaubt den Code mal zu aendern, als Lösung eine alte Rückwaerts Variante genommen. 
Sie hat den Vorteil das man sich keine Daten überschreibt. Der Code ist auch für Anfanger leicht zu verstehen.

mfg  Gast 123

Code:
Sub Start_Gast()
Dim lz1 As Long, i As Long
Dim lz4 As Long, n As Long
'LastCell in Spalte A + D ermitteln
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz4 = Cells(Rows.Count, 4).End(xlUp).Row

'Rückwarts ausfüllen mit Step-1
For i = lz4 To 8 Step -1
  If Cells(i, 4) = 1 Then
     Cells(lz1, 1).Resize(1, 3).Cut Cells(i, 1)
     lz1 = lz1 - 1
     If lz1 = 8 Then Exit For
  End If
Next i
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste