Matrixname in zelle

hallo,
kann man (auf einfache Art) realisieren, dass Excel einen Zellinhalt als Matrixname interpretiert, oder geht das nur über Programmierung von Makros?
Oder anders: Ich möchte in einer Formel einen Zellverweis eingeben, sodass mit den Werten der in dieser Zelle benannten Matrix weitergerechnet wird.
Bin für jedwede Anregung dankbar!

Hallo,

schau mal in der Hilfe unter „INDIREKT“. Das sollte vermutlich das sein, was Du brauchst.

Gruß, Manfred

hallo Manfred,
besten Dank für den Tip, kannte die Funktion noch nicht u. es funzt auch, insofern hats mir geholfen, ist aber nicht das, was ich suche:
2. Versuch:
Ich trage in a1 einen Namen (Code) ein, dieser Eintrag soll automatisch das Feld/Vektor/Matrix b1:f1 (z.B.)generieren und Name für dieses Feld sein. Mit INDIREKT muß ich ja manuell in meiner Eingabemaske Zellen markieren und Namen vergeben - mühsam! Ich hab das Problem zwar mit SVERWEIS gelöst, bloß bekomme ich da riesige „Klötze“ an zusammengesetzten Funktionen - wird schnell unübersichtlich dann.
Wie dem auch sei
Gruß

Hi wfe,

Ich trage in a1 einen Namen (Code) ein,

was genau trägst du da ein? Oder meinst du mit Code daß da ein Makro was einträgt? Mit Namen (Code) kann ich leider nix anfangen :frowning:
Bring mal ein Beispiel was du oder wer da reinschreibst.

dieser Eintrag soll
automatisch das Feld/Vektor/Matrix b1:f1 (z.B.)generieren und
Name für dieses Feld sein.

Du schreibst in A1 „Müller“ rein, das soll dann der Excelname für B1:F1 sein?

Mit INDIREKT muß ich ja manuell in

meiner Eingabemaske Zellen markieren und Namen vergeben -
mühsam! Ich hab das Problem zwar mit SVERWEIS gelöst, bloß
bekomme ich da riesige „Klötze“ an zusammengesetzten
Funktionen - wird schnell unübersichtlich dann.

Mir unklar wie du mit Sverweis Namen anlegst, kann aber auch sein daß ich überhaupt nicht kapiert habe was du da so treibst/treiben willst.

Gruß
Reinhard

Du schreibst in A1 „Müller“ rein, das soll dann der Excelname
für B1:F1 sein?

hallo reinardo,
Genau das, gibt es einen Trick, Zellbezüge als Namen zu definieren?
Ich hab eine Eingabetabelle (Einzelpreise/b1:f1 von Müller/a1, Meier/a2…) und in der Auswertetabelle gebe ich z.B. Meier (a100) und die Stückzahlen (b100 bis f100)ein. Mit SVERWEIS greife ich auf die Einzelpreise z.B. von Meier zu -> der Endpreis ergibt sich aus einer Summe von Produkten, in der jedes Produkt eine SVERWEIS-Funktion auf die Eingabetabelle/Einzelpreise (Suche nach Meier) von Meier enthält -> riesige Formeln.
SUMMENPRODUKT(„a20“(Bestellung bei Meier,Einzelpos.);b20:f20(Stückzahlen))ist nicht möglich, wohl aber SUMMENPRODUKT(„Meier“;b20:f20), wenn ich hierzu in der Eingabetabelle manuell für die Zeile, in der Meier steht, den Namen „Meier“ vergebe.
Oder gibt es eine Möglichkeit, so dass Sverweis eine Zeile liefert?

Gar nicht so ohne mit der eindeutigen Terminologie…

Gruß wfe

Du schreibst in A1 „Müller“ rein, das soll dann der Excelname
für B1:F1 sein?

hallo reinardo,
Genau das, gibt es einen Trick, Zellbezüge als Namen zu
definieren?

Hi wfe,

Alt+F11, Doppelklick links auf den Blattnamen, Code einfügen, Editor schließen.
Den Namen den du dann in A1 eingibst wird als Namen für den Bereich B1:F1 genommen.
Den Befehl Call Löschen() kannst du rausnehmen wenn mehrere Namen für einen Bereich zulässig sein sollen.

Es gibt Excel4Makros die auch in euen XL-Versionen laufen, z.b. Zelle.Zuordnen wenn man das unter Namen–Definieren festlegt.

d.h. ich lege einen Namen fest, zB. abc und weise ihm z.B.
=NAMEN.FESTLEGEN(Nament;Tabelle3!$C$10:blush:Q$20;1;„i“)
zu.

Dann schreibt man ihn eine Zelle =abc und schon ist dem Namen „Nament“ der Bereich C10:Q20 zugewiesen, soweit die Theorie,
bei Namen.Festlegen wehrt sich Excel noch, aber ich weiß bei z.B.
Zelle.Zuordnen() klappt das.

Vielleicht habe ich noch einen Syntaxfehler drin, mal nach „Name.Festlegen“ googlen, oder der befehl kann nur in einem Excel4Makroblatt ausgeführt werden und nicht via amensvergabe, k.A.

Zurück zum makro, dem Namen den du in A1 eingibst wird automatisch der Bereich B1:F1 zugewiesen, hilft dir das weiter?

Gruß
Reinhard

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Range("A1") = "" Then Exit Sub
Call Loeschen("=" & ActiveSheet.Name & "!" & Range("B1:F1").Address(True, True, xlA1))
ThisWorkbook.Names.Add Name:=Range("A1"), RefersToR1C1:="=" & ActiveSheet.Name & "!" & Range("B1:F1").Address(True, True, xlR1C1)
End Sub
'
Sub Loeschen(strAdresse As String)
Dim N
For Each N In ThisWorkbook.Names
 If N.RefersToLocal = strAdresse Then N.Delete
Next N
End Sub

Grüezi Robert (?)

Ich trage in a1 einen Namen (Code) ein, dieser Eintrag soll
automatisch das Feld/Vektor/Matrix b1:f1 (z.B.)generieren und
Name für dieses Feld sein.

Reicht es, wenn der Namen ‚halbautomatisch‘ generiert wird?

  • Trage deine Daten in B1:F1 und vor allem den Namen in A1 ein.
  • Markiere A1:F1
  • Menü:’ Einfügen’
  • Namen
  • Erstellen…
  • [x] Aus linker Spalte
  • [OK]

Nun ist der Name für B1:F1 erstellt mit dem Eintrag aus A1.

Wenn Du das Ganze für Spalte A automatisieren willst, dann kopiere folgende Zeilen ins Codemodul des Tabellenblattes - für jeden Eintrag in Spalte A wird dann der jeweilige Bereich in den Spalten B:F als Bereichsname mit dem Inhalt aus Spalte A erzeugt. Du musst nur noch sicherstellen, dass Du in Spalte A keine doppelten Begriffe hast:

Private Sub Worksheet\_Change(ByVal Target As Range)
 Set Target = Intersect(Target, Range("A:A"))
 If Not Target Is Nothing Then
 If Target.Count = 1 Then
 Target.Resize(1, 6).CreateNames Top:=False, \_
 Left:=True, \_
 Bottom:=False, \_
 Right:=False
 End If
 End If
End Sub


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -