Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
348to352
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchfunktion / VBA

Suchfunktion / VBA
09.12.2003 12:41:16
Jacob
Hallo,

ich möchte folgendes tun:

in einer Tabelle in der Spalte A habe ich 100 Zeilen, die durchnummeriert sind ( 1 - 100 ). Nach dem Löschen des Inhaltes zB. von Zeile 5 soll eine Routine die fehlende Nummer finden und in die Zeile schreiben. Die Spalte ist nicht sortiert. Falls es aber keine "freie Nummer" gibt soll die nächste Nummer eingfügt werden, in diesem Fall 101. Ich hoffe mir kann jemand von Euch helfen.

Viele Grüße

Jacob

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfragen
09.12.2003 14:10:58
Martin Beck
Hallo Jacob,

1. Beim löschen wird die Zeilennumer mit gelöscht, richtig?

2. Sind es immer genau 100 Zeilen?

3. Wieso läßt Du die Nummer beim Löschvorgang nicht einfach stehen, es kann doch gar keine andere Lücke geben?

4. Wieso (und wann) soll die 101 zum Zuge kommen?

Gib mal eine bißchen mehr Input, das Problem läßt sich wahrscheinlich leicht lösen, wenn es detaillierter beschrieben wird.

Gruß
Martin Beck
AW: Nachfragen
09.12.2003 14:22:52
Jacob
Super, dann wollen wir mal schauen
1. Die Zeilenummer wird nicht gelöscht, lediglich der Inhalt
2. Die Zeielenanzahl kann verschieden sein, 100 war nur ein Beispiel
3. Die Nummer muß gelöscht werden, da die Vorgaben es erfordern.
4. Die 101 (in diesem Fall) oder eine neue Nummer soll dann in die Zelle geschrieben werde, wenn keine andere Nummer frei ist. Es soll zuerst geprüft werden wieviele Nummer in der A Spalte vorhanden sind, ob die keine Lücken aufweisen, wenn Ja dann soll die Lücke mit der entsprechener Nummer gefüllt werden ansonsten eine neue Nummer (n+1) ans Ende hinzugefügt werden.

Ich hoffe Sie werden den Sinn verstehen und mir helfen können.

Viele Grüße

Jacob
Anzeige
Bitte Datei uploaden
09.12.2003 14:35:32
Martin Beck
Hallo Jacob,

das ist so zu umständlich. Kannst Du mal die Datei hier auf den Server uploaden?

Gruß
Martin Beck
AW: Bitte Datei uploaden
09.12.2003 14:47:06
Jacob
Hallo Martin,

vielleicht stellt du dir das zu kompliziert vor. Nimm einfach eine leere Tabelle und die Spalte A soll von 1-10 nummeriert werden. Dann einfache Schaltfläche hinzufügen die folgendes tut:
- Die Spalte A wird durchsucht welche Einträge vorhanden sind (in diesem Fall 1-10).
- Wenn du angenommen die 2 rauslöscht soll die Routine es feststellen können und die fehlende 2 in die leere Zeile einfügen.
- Wenn Spalte A durchgehend von 1-10 nummeriert ist dann soll eine 11 hinten dran hizugefügt werden.

Die orginal Datei steht noch nicht fest, aber die Tabelle habe ich hinzugefügt unter https://www.herber.de/bbs/user/2392.xls
Anzeige
Sorry, ich kapier's nicht
09.12.2003 14:56:11
Martin Beck
Hallo Jacob,

ich kapier's nicht.

1. Nach Deinen Anweisungen wird doch immer wieder der Ausgansgzustand hergestellt. Ich lösche z.B. den Inhalt der Zeile, die in Zelle A2 die 2 stehen hat. Anschließend setze ich dort wieder die 2 ein. Wozu soll das gut sein? Ich kann doch die 2 gleich stehen lassen.

2. Wenn ich eine Zeile lösche, muß es in den Einträgen in Spalte A doch immer eine Lücke geben (nämlich die, die ich durch das Löschen hervorgerufen habe). Daher kann die letzte von Dir beschriebene Variante doch nie eintreten.

Wenn Du das Problem nicht noch etwas nachvollziehbarer beschreibst oder eine "reale" Tabelle uploadest, kann ich Dir leider nicht weiterhelfen.

Gruß
Martin Beck
Anzeige
AW: Sorry, ich kapier's nicht
09.12.2003 15:09:47
Jacob
Hallo Martin

ich weiss das es etwas undurchschaubar ist aber die Vorgabe (nicht die von mir) ist nun mal wie sie ist. Ich versuche es dir ein wenig zu erklären. Auf diese Tabelle sollen ca. 20 Anwender zugreifen können. Alle haben die Möglichkeit in der Tabelle Änderungen durchzuführen. Die Tabelle beinhaltet selbstvertändlich nicht nur die Spalte A sondern auch adnere Spalten für die weiteren Vorgangsdaten. Wenn ein Vorgang, welches in der Tabelle schon angelegt wurde, abgeschlossen ist, wird die Vorgangsnummer einfach freigegeben (durch Löschen des Inhalts der entsprechenden Zeile inkl. der Nummer). Sobald ein von den 20 Anwender einen neuen Vorgang anlegen muss soll er die Möglichkeit bekommen zu schauen, ob eine Nummer in der Zwischenzeit frei geworden ist oder er muss eine neue anlegen. Meine Aufgabe ist es diesen Vorgang zu automatisieren. Ich hoffe du kannst es jetzt ein wenig besser verstehen.

Gruß

Jacob
Anzeige
Lösungsvorschlag
09.12.2003 16:26:27
Martin Beck
Hallo Jacob,

jetzt lichten sich die Nebel. ;-)

Nachstehend mal ein Codebeispiel. Annahme: Die Einträge beginnen in Zeile 1. Ergebnis: Eine Meldung, die die kleinste "freie" Vorgangsnummer angibt. Hoffentlich kannst Du damit etwas anfangen.

Gruß
Martin Beck


Sub neuer_Vorgang()
Dim arr1()
z = Range("A65536").End(xlUp).Row
ReDim arr1(z)
For i = 1 To z
arr1(i) = Cells(i, 1)
Next i
'Bubblesort
For j = 2 To z
If arr1(j - 1) > arr1(j) Then
zwi = arr1(j - 1)
arr1(j - 1) = arr1(j)
arr1(j) = zwi
End If
Next j
If arr1(1) > 1 Then
MsgBox "Neue Vorgangsnummer ist: 1"
Exit Sub
End If
For k = 1 To z - 1
If arr1(k + 1) > arr1(k) + 1 Then
MsgBox "Neue Vorgangsnummer ist: " & arr1(k) + 1
Exit Sub
End If
Next k
MsgBox "Neue Vorgangsnummer ist: " & arr1(z) + 1
End Sub

Anzeige
Einmischung
09.12.2003 15:23:39
FCH
Hi,

Also, ja mehr du Martin erklärst, um so verwirrter werde ich :-)

Wenn deine Mappe so aufgebaut ist, wie deine hochgeladene, dann ist Spalte A doch sortiert. Und bei deinem Ansinnen – so wie ich das verstehe – bleibt dies auch so, da du ja immer die kleinste freie Nummer suchst.

Oder stehe ich völlig auf dem Schlauch?

Gruß
FCH
AW: Einmischung
09.12.2003 15:30:29
JAcob
Hallo,

sorry mein Fehler die Spalte A mit den Nummern soll unsortiert sein und ich suche immer noch nach einer Lösung.

Danke Jacob
AW: Einmischung
09.12.2003 15:49:14
FCH
Hi,

mal ein Versuch:


Sub fuellen()
Dim lgCou As Long
Dim lgRow As Long
Dim lgZ As Long
lgCou = WorksheetFunction.Count([A:A])
lgRow = [A65536].End(xlUp).Row
If lgCou = lgRow Then
Cells(lgRow + 1, 1) = lgRow + 1
Else
lgZ = 1
Do While WorksheetFunction.CountIf([A:A], lgZ) = 1
lgZ = lgZ + 1
Loop
If [A1] < 1 Then
[A1] = lgZ
ElseIf [A2] < 1 Then
[A2] = lgZ
Else
Cells([A1].End(xlDown).Row + 1, 1) = lgZ
End If
End If
End Sub


Gruß
FCH
Anzeige
AW: Einmischung
09.12.2003 15:55:31
Jacob
Danke schön, ich werde es glech testen aber es kann sein dass ich dir erst morgen antworte, da ich gleich ein meeting habe. Nicht böse sein und ich freue mich schon
Super und vielen Dank

Jacob
AW: Einmischung
09.12.2003 16:06:20
Jacob
Ich möchte mich bei dir bedanken es funktioniert genauso wie ich es mir vorgestellt habe. Super, jetzt muss ich nur mir das genau anschauen für die Zukunft.

Viele Grüße

Jacob

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige