Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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
Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 15:18:31
Nat
Hallo, da ich absoluter Newbie im Bereich VBA bin, bitte ich um Verständnis, falls diese Frage anders gestellt schon einmal beantwortet wurde.
Ich habe eine große Tabelle, in der in einer Spalte (C) per Combobox mehrere Werte mittels Komma getrennt in eine Zelle eingetragen werden können. Die Zuweisung der Combobox soll sich allerdings zukünftig ändern und somit auch die eingetragenen Werte. Ein Zellenwert sieht z.B. so aus:
14,7,11
Dahinter verbirgt sich folgende Combobox zum Füllen der Zelle:
branches(0) = "Beispiel 0"
branches(1) = "Beispiel 1"
branches(2) = "Beispiel 2"
branches(3) = "Beispiel 3"
branches(4) = "Beispiel 4"
branches(5) = "Beispiel 5"
branches(6) = "Beispiel 6"
branches(7) = "Beispiel 7"
branches(8) = "Beispiel 8"
branches(9) = "Beispiel 9"
branches(10) = "Beispiel 10"
branches(11) = "Beispiel 11"
branches(12) = "Beispiel 12"
branches(13) = "Beispiel 13"
branches(14) = "Beispiel 14"
branches(15) = "Beispiel 15"
branches(16) = "Beispiel 16"
branches(17) = "Beispiel 17"
Zukünftig werden es nur noch 14 Branchen sein und branches(14) bis (17) werden zusammengefasst zu branches(14).
branches(0) = "Beispiel 0" wird zu branches(1) = "Beispiel 0"
branches(1) = "Beispiel 1" wird zu branches(2) = "Beispiel 1"
branches(2) = "Beispiel 2" wird zu branches(3) = "Beispiel 2"
branches(3) = "Beispiel 3" wird zu branches(4) = "Beispiel 3"
usw.
Mein Ansatz war zunächst einfach die Branchen mit neuen Werten zu belegen (branches(0) wird zu branches(1), branches(1) zu (2) usw., also alles +1 bis einschließlich (13). Das ist zwar nett, aber meine bereits eingetragenen Werte bleiben unverändert und die Zuordnung stimmt dann nicht mehr.
Mein zweiter Ansatz war die gesamte Spalte Zeile für Zeile einzulesen und mit if Abfrage bis 13 um eins zu erhöhen. Hier komme ich nicht weiter, denn am Ende müssen die neuen Werte wieder in die Zelle geschrieben werden unter Beibehaltung der Werte größer, gleich 14.
Gibt es einen besseren Ansatz als meinen? Also vielleicht eine update Funktion, die die gesamte Spalte mit den neuen Zuweisungen der Branchen aktualisiert? Ein update der Spalte per Klick auf einen Button?
In meiner Abfrage zerlege ich die Zahlen, addiere plus 1 und möchte sie wieder in die Zelle schreiben. Ich habe auch die if Abfrage, wenn der Wert größer, gleich 14 ist, dann tue erst einmal nichts. Am Ende sollte die Zelle "14,7,11" so aussehen: "14,8,12".
Ich würde mich über Hilfe sehr freuen.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 18:27:24
onur
Hi,
Du setzt Sachen voraus, die DU auf deinem Schirm siehst, wir aber nicht.
Abgesehen davon erzählst du uns von deinem Ansatz, den aber nur du kennst.
Außerdem weiss keiner welche Zelle "so aussehen: "14,8,12"." soll und warum.
Was ich auch nicht verstehe: Warum muss branches(0) auf einmal zu branches(1) werden, wenn sich doch nur die branches(14-17) sich ändern und was ist der Sinn und Zweck dieser Datei?
Eine Datei zu posten würde schon mal einige der fragen beantworten.
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 18:50:05
Nat
Hallo,
danke für die Antwort, ich sehe ein, dass das viel zu wenig Informationen meinerseits sind.
Hier ist die Beispieldatei:
https://www.herber.de/bbs/user/113416.xlsm
Ich bin mir nicht sicher, ob mein Ansatz, die Werte der Zellen auszulesen, zu verändern und wieder neu in die Zelle zu schreiben, die beste Lösung ist.
Es ist eine Excel-Tabelle mit mehr als 10000 Einträgen, die als CSV in Access importiert werden sollen. Da die Access-DB schon existiert und die Tabelle Branchen schon angelegt wurde und Daten beinhaltet, war der Wunsch da, einfach die Daten im Import zu übernehmen und in die Tabelle schreiben zu lassen. Der Index in der Branchen-Tabelle wurde in Access geändert, daher muss er in Excel nun neu gesetzt werden, um die richtige Zuordnung zu haben.
Danke für die Hilfe.
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 19:28:15
onur
Hi,
Nix für ungut, aber das ist doch keine Beispieldatei.
Ich schreibe, ich brauche die datei, und du schickst mir eine mit 3 Zeilen und 3 leeren blättern.
Ohne eine funktionstüchtige, dem Original ebenbürtige Datei kann ich dir nicht helfen, zumal ich immer noch nicht weiss, was wo geändert werden soll.
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 19:52:41
Nat
Hallo,
sorry, aber die volle Datei kann ich leider nicht schicken und alle wichtigen Informationen sind enthalten. Es geht um die Spalte C, hier kann man per Doppleklick auf z.B. C2 die Listbox aufrufen, die wiederum im VB-Editor unter dem Formular branchesForm definiert wurde.
Mein bisheriger Ansatz ist das Modul WerteErsetzenBranche und gibt im Direktbereich beim Ausführen die gewünschten Werte aus. Allerdings nicht so, wie ich es gerne hätte. Mittlerweile speichere ich die Daten in einer Variablen, aber irgenwie fehlt mir noch etwas, um sie richtig zu formatieren:
Option Explicit
Const branchesRange As String = "C2:C10"
Sub FindeZahlen()
'** Alle Werte aus dem Bereich "C2:C16000" auslesen
'** Dimensionierung der Variablen, i entspricht dem index
Dim rngZelle As Range
Dim i As Integer
Dim ZahlenArray() As String
Dim strText As String
Dim strText2 As String
'** Durchlaufen aller Zellen im Bereich
For Each rngZelle In Range(branchesRange)
' Debug.Print "Originalwert: " & rngZelle.Value
ZahlenArray() = Split(rngZelle.Value, ",")
For i = LBound(ZahlenArray) To UBound(ZahlenArray)
If ZahlenArray(i) > 0 And ZahlenArray(i) = 14 Then
ZahlenArray(i) = 14
strText2 = ZahlenArray(i)
'Debug.Print "Zwischenwert größer als 14: " & ZahlenArray(i)
End If
Debug.Print strText & ","; strText2
Next i
Next rngZelle
End Sub
Ich brauche eine Ausgabe die z.B. so aussieht 8,10 und nicht:
8,
10,
Also Werte sollen nicht untereinander geschrieben sein und kein Komma am Ende. Die Zelle C2 hat die Werte 7,9, die sollen nach dem Skript 8,10 haben und kein Komma nach dem letzten Wert.
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 20:01:50
onur
Willst du echt eine Ausgabe im Debug-Fenster?
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 20:19:12
Nat
Danke für Deine Antwort und berechtigte Frage. :)
Nein, es sollen am Ende die geänderten Werte in die entsprechende Zelle in Spalte C zurückgeschrieben werden, ich wollte nur auf Nummer sicher gehen, bevor ich wirklich alle Daten verändere, denn es funktioniert ja noch nicht richtig.
Daher ja auch meine Frage, ob das alles überhaupt so gut ist, was ich da veranstalte ....
Die Werte in Spalte C müssen dem neuen Index in der Access-Tabelle entsprechen, aus 0 wird 1, aus 1 wird 2, aus 2 wird 3 usw.. Immerhin kann ich mir die Werte der Zellen anzeigen lassen, um sie dann zu splitten. Alles was gleich oder größer index 14 ist soll zu 14 geändert werden, bzw. bleibt 14. Und hier weiß ich einfach nicht weiter....
Ich habe Zellen wie diese z.B: 7,13,14,17 wie bekomme ich es hin, dass ich am Ende diese Werte 8,14,14,14 in die Zelle wieder zurückschreiben kann?
An der Stelle wäre es natürlich ideal, wenn doppelte oder dreifache Einträge derselben Zahl nur einmal vorkommen würden.
Danke für Deine Hilfe.
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 20:27:08
onur
Dann poste mal eine Datei mit mehr Daten (möglichst viele verschiedene Möglichkeiten) und wie es hinterher richtig aussehen soll.
Wenn ich das richtig verstanden habe, brauchst du die Listbox eigentlich gar nicht - oder?
Ich bin sicher, daß man das ganze mit einem Bruchteil deines Codeaufwandes bewerkstelligen kann.
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 20:15:40
onur
Ich weiss immer noch nicht, was du machen willst.
Was passiert denn mit den ausgewählten Daten in der Listbox?
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 20:25:12
Nat
Die Daten in der Listbox, sind dann hinfällig, denn ich brauche nur die geänderten Werte hinsichtlich des Access-Index. Ich kann den Index der Listbox natürlich ändern und auch die überflüssigen Branchen entfernen, aber die Spalte C bleibt ja dann trotzdem noch so erhalten, wie vor der Änderung der Listbox.
Wenn es eine Funktion gäbe, mit der ich z.B. per Knopfdruck, die gesamtte Spalt C mit den aktualisierten Einträgen der Listbox neu schreiben könnte, wäre das natürlich mein Traum.
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 21:25:30
Nat
Genau, es reicht, wenn die Daten in den Zellen geändert werden würden, denn dann könnte ich die Listbox deaktivieren, so dass vor dem Export, keine Änderungen über diese Box mehr erfolgen kann. Im Prinzip werden die Daten nur für den Export als CSV aufbereitet.
Im Anhang gib es eine geänderte Version, in der die Spalte D die gewünschten "idealen" Änderungen zeigt.
https://www.herber.de/bbs/user/113421.xlsm
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 21:39:00
onur
Hast du was vergessen?
Jeder Wert nur einmal, auch wenn er mehrmals auftaucht?
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 21:42:29
onur
Und das alles über 14 zu 15 wird?
Anzeige
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 22:24:17
Nat
Ich habe nichts vergessen, sondern den Idealzustand abgebildet, denn doppelte Einträge wären ja nicht notwendig. Alles was gleich oder größer 14 ist, soll zu 14 werden bzw. bleiben.
13 wird zu 14, 14 bleibt 14, 15 wird zu 14, 16 zu 14, 17 zu 14.
AW: Zellenwerte auslesen, um 1 addieren, einfügen
08.05.2017 23:22:32
onur
https://www.dropbox.com/s/8fa42cwk0frafab/testttt.xlsm?dl=0
AW: Zellenwerte auslesen, um 1 addieren, einfügen
09.05.2017 09:51:57
Nat
Meinen aufrichtigen Dank für diese elegante Lösung und ich durfte etwas dazu lernen, danke!
AW: Zellenwerte auslesen, um 1 addieren, einfügen
09.05.2017 16:55:56
onur
Nix zu danken, gern geschehen.

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige