Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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
Inhaltsverzeichnis

Werte in eine Matrix schreiben

Werte in eine Matrix schreiben
30.01.2015 13:44:33
Jan
Hallo,
ich habe Artikel in einer Liste (Artikelnummer, Artikeltext, Artikel Preis, etc) gespeichert und kann die Artikeldaten mit dem Sverweis Befehl abfragen. Ist es auch möglich, die abgefragten Daten zu ändern bzw. zu überschreiben, also einen Datensatz zu editieren?
Vielen Dank im Voraus
Jan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in eine Matrix schreiben
30.01.2015 13:55:45
yummi
Hallo Jan,
du musst dann die Daten aus deiner Daten tabelle ändern (nicht aus der Zelle mit dem SVerweis) und dann den geänderten WErt auch dort speichern. Die Zelle mit dem SVerweis übernimmt den geänderten Wert automatisch.
Gruß
yummi

AW: Werte in eine Matrix schreiben
30.01.2015 14:11:29
Jan
Das meine ich nicht...
Ich möchte mir die Daten aus meiner Artikelliste mit sverweis holen, bearbeiten und per Makro wieder zurückschreiben

AW: Werte in eine Matrix schreiben
30.01.2015 14:28:22
UweD
Hallo
kommst du eventuell mit der Excel eigenen "Maske" zur Dateneingabe klar?
Die ist leider versteckt und muss erst eingeblendet werden.
- Klicken Sie auf den Pfeil am Ende der Schnellzugriff- Leiste
- weitere Befehle
- Bei Kategorien "Alle Befehle" auswählen.
- Unter M ...Maske auswählen
- Klick auf die Schaltfläche Hinzufügen Ihrer Schnellzugriffsleiste hinzu
Dann einfach den Berech markieren, auf das neue Symbol klicken und deinen "Suchbegriff" im ersten Feld eigeben.
Die restlichen Daten werden angezeigt, und sind dort auch änderbar
Userbild

Anzeige
AW: Werte in eine Matrix schreiben
30.01.2015 14:37:48
Jan
Ok, die Masken kenne ich, ist aber nichts bei 10.000 Artikeln.
Ich hatte folgendes gedacht. Gebe in eine Zelle die Artikelnummer ein, sverweis holt sich alle Artikeldaten in eine neuen Zeile, ein Makro speichert den Wert der Zeile zurück in die Datenliste und überschreibt dabei den alten Datensatz.
Gruß und Danke
Jan

AW: Werte in eine Matrix schreiben
02.02.2015 14:28:33
Jan
Ich möchte das nochmal konkretisieren:
In der Zelle D7 Sheet "Rechnungssuche" steht der Suchbegriff, es ist eine eineindeutige Zuordnung einer Zeile in der DB. Ein Makro soll nun die Wert wir hier abspeichern, jedoch nicht wie hier in A19 Sheet "Daten", sondern in der Zeile, die mit dem Suchbegriff beginnt.
Sub Daten_ueberschreiben()
'
' Daten_ueberschreiben Makro
'
'
Sheets("Rechnungssuche").Select
Range("A64:DR64").Select
Selection.Copy
Sheets("Daten").Select
Range("A19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Viele Dank nochmals
Jan

Anzeige
Manuell oder per VBA? Gruß owT
31.01.2015 02:05:59
Luc:-?
:-?

Per VBA hast du ja geschrieben! Ja! Vorgehens-...
31.01.2015 03:56:52
Luc:-?
weise:
1. SVERWEIS-Zeile kopieren und mit Werten überspeichern!
2. manuell Änderungen vornehmen (aber nicht am hoffentlich einmalig-eindeutigen Suchbegriff)!
3. Mit RückspeicherRoutine in DB zurückspeichern!
zu 1.:
1.1: Auf dem AbfrageBlatt sollte eine Zelle für die Angabe des SuchBegriffs vorgesehen sein. Diese wird dann in der SVERWEIS-Fml benutzt, die idR aber stets nur 1 Wert zurückgibt, wofür dann eine 2.Zelle erforderlich wäre, in der man den Versatz des gewünschten Wertes in Bezug auf den SuchBegriff, der bekanntlich der 1. des DSatzes sein sollte, angibt (3.Argument von SVERWEIS). Auf diese Weise erhält man die FixWerte, die zum Rückspeichern benötigt wdn.
1.2: Soll (mal) ein ganzer DSatz hier ausgegeben wdn, um mehrere Werte auf 1× zu ändern, wäre eine alternative FmlZeile sinnvoll, die dann eine andere (Matrix-)Fml (über soviele Spalten wie der DSatz lang ist) verwenden müsste (der SuchBegriff sollte sich auf die 1.DB-Spalte beziehen):
=INDEX(absoluteAdresseGesamtZellBereichDB;VERGLEICH(absoluteAdresseSuchBegriffsZelle; absoluteAdresseGanzerSuchBegriffsSpalteDB;0);SPALTE())
Diese Fml kann über soviele Zellen gezogen wdn, wie erforderlich, falls nicht die MatrixFmlForm über alle Zellen der Zeile bevorzugt wird, hierbei kann dann die 2.Zelle zur Angabe der Position des (gewünschten) letzten DS-Wertes genutzt wdn:
{=INDEX(AdresseGesamtZellBereichDB;VERGLEICH(AdresseSuchBegriffsZelle; AdresseGanzerSuchBegriffsSpalteDB;0);1):INDEX(AdresseGesamtZellBereichDB; VERGLEICH(AdresseSuchBegriffsZelle;AdresseGanzerSuchBegriffsSpalteDB;0); spaltenAnzahlDSatzZelleAlsZahl)} oder …
{=INDEX(AdresseGesamtZellBereichDB;VERGLEICH(AdresseSuchBegriffsZelle; AdresseGanzerSuchBegriffsSpalteDB;0);SPALTE(A:spaltenAnzahlDSatzZelleAlsBuchst)) }
Die erste und die letzte Fml unter 1.2 lassen sich auch mit SVERWEIS realisieren:
=SVERWEIS(absoluteAdresseSuchBegriffsZelle;absoluteAdresseGesamtZellBereichDB; SPALTE(A1);0) oder …
{=SVERWEIS(AdresseSuchBegriffsZelle;AdresseGesamtZellBereichDB; SPALTE(A:spaltenAnzahlDSatzZelleAlsBuchst);0) }
Für die MatrixFmln je nach endgültiger VorgehensEntscheidung ggf eine 3.EintragungsZelle vorsehen, damit das RückSpeicherPgm auch davon abhängig machen kann, welche Daten in die DB übertragen wdn sollen.
zu 2.:
Die Ergebnisse der FmlZeile(n) wdn dann kopiert und als Werte in separater(/n) Zeile(n) gespeichert. Das kann automatisiert per EreignisProzedur (Worksheet_Change im DokKlassenModul des betroffenen Blattes) erfolgen, wenn alle erforderlichen Daten in die entsprd Zellen eingetragen wurden (also vor Eintragung diese Zellen löschen, falls das nicht schon das RückSpeicherPgm tun soll → falls nicht noch der Erfolg der RückSpeicherg vgln wdn soll!).
In der Zeile mit den kopierten Werten wdn dann die Änderungen manuell vorgenommen (bei dieser Organisation könnte sogar der SuchBegriff geändert wdn, denn der ursprgl steht ja noch zV).
zu 3.:
Der Aufruf des RückSpeicherPgms kann naturgemäß nicht automatisiert erfolgen, denn es soll ja erst noch geändert wdn. Hier reicht dann eine KurzRufTastenKombi oder ein Klick auf einen Button, auf den der PgmAufruf gelegt wurde.
Das Pgm selbst sucht anhand des Inhalts der SuchBegriffsEingabeZelle die zutreffende Zeile der DB heraus und überschreibt sie in Gänze bzw je nach Angabe in den weiteren EingabeZellen mit dem/n Inhalt(en) der KorrekturZeile. Das sollte kein großer Hit und auch für einen VBA-Anfänger machbar sein, denn die Suche auf dem DB-Blatt erfolgt ja ganz ähnlich. Hierzu kann man ganz ohne Zyklus über alle Zellen der entsprd DB-Spalte einfach z = WorksheetFunction.Match(…) [entspricht VERGLEICH] verwenden, um die relevante DB-Zeile zu ermitteln. Falls die Routine für die EinzelwertKorrektur genutzt wird, muss dann nur noch für s der Wert aus der 2.EingabeZelle genutzt wdn, um mit .Cells(z, s) (z=Zeilen-, s=SpaltenNr) den zu überschreibenden DB-Wert festlegen zu können.
Geht es um mehrere oder alle Werte, ist das auch kaum komplizierter.
Auf der Grundlage dieser Beschreibung solltest du dir deine Vorgehensweise und davon abgeleitet die Form deines Eingabe- und KorrekturBlattes überlegen. Auf dessen Grundlage ist dann die Pgmierung nicht allzu kompliziert und kann hier von vielen geleistet wdn, falls du das nicht ohnehin alleine hinbekommst, so dass ich mich nicht damit befassen muss (und auch nicht will). Notfalls kannst du dabei ja noch mal um Unterstützung bitten, aber die Struktur des KorrekturBlattes sollte dann als Mindestes fertig sein (und dann auch noch einen kleinen DB-Dummy-Auszug beilegen)!
Das waren alles, aus meiner Sicht, sinnvolle Vorschläge. Was du davon umsetzen willst und ob du das so gebrauchen kannst, ist natürlich deine Entscheidung.
Morrn, Luc :-?

Anzeige
AW: Per VBA hast du ja geschrieben! Ja! Vorgehens-...
02.02.2015 16:36:25
Jan
Ich möchte das nochmal konkretisieren:
In der Zelle D7 Sheet "Rechnungssuche" steht der Suchbegriff, es ist eine eineindeutige Zuordnung einer Zeile in der DB. Ein Makro soll nun die Wert wir hier abspeichern, jedoch nicht wie hier in A19 Sheet "Daten", sondern in der Zeile, die mit dem Suchbegriff beginnt.
Sub Daten_ueberschreiben()
'
' Daten_ueberschreiben Makro
'
'
Sheets("Rechnungssuche").Select
Range("A64:DR64").Select
Selection.Copy
Sheets("Daten").Select
Range("A19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Viele Dank nochmals
Jan
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige