Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1080to1084
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

Bereichsnamen

Bereichsnamen
20.06.2009 23:48:29
Peter
Hallo,
ich habe für Zellbereiche Namen vergeben (Brot_Einkauf und Brot_Verkauf und viele mehr).
In einer anderen Tabelle steht in einer Zelle Brot.
Nun möchte ich mit einer Formel das Minimum aus dem Bereich Brot_Einkauf und das Maximum aus dem Bereich Brot_Verkauf ermitteln.
Die richtigen Formeln wären =min(Brot_Einkauf) und =max(Brot_Verkauf).
Gibt es eine Möglichkeit, dass ich auf die Zelle, in der der Eintag Brot steht verweise und die Erweiterung _Einkauf bzw. _Verkauf ergänze?
Ich habe es mit =min(A5&"_Einkauf"&) versucht, aber es funktioniert leider nicht.
Eine Lösung würde mir eine Menge Tipperei ersparen.
Danke schon mal im Voraus
Peter

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

Betreff
Datum
Anwender
Anzeige
Dazu benötigst du eine VBA-udFkt,...
21.06.2009 03:44:23
Luc:-?
...Peter,
wie bspw die hier folgende... Rem Verwendung eines Textes (=vorhand Name!) als Bereichsbezug ' Vs 1.2a -Autor: LSr -1Pub: 20090621 Herber -CDate: 2004/5 -LUpd: 20070706t Function T2RName(ByVal BerName As Variant) As Variant Dim i As Integer If IsArray(BerName) Then BerName = BerName(1) 'MxFml-Sicherung f.Einzelname BerName = Trim(BerName) If InStr(BerName, " ") > 0 Then BerName = Replace(BerName, " ", "") With ActiveWorkbook For i = 1 To .Names.Count If Replace(Replace(.Names(i).Name, "'", ""), _ ActiveSheet.Name & "!", "") = BerName Then Exit For Next i If i > .Names.Count Then T2RName = CVErr(xlErrNA) Else: T2RName = Evaluate(.Names(i).Value) End If End With End Function

Dazu im VB-Editor (Menü Entwicklertools - Visual Basic) zu deinem Projekt oder besser in einer Sammelmappe für VBA-Prozeduren (die du auch als AddIn installieren könntest) mit Rechtsklick auf Baumstruktur, Einfügen - Modul wählen, ein StddModul hinzufügen und dahinein die obige FktsProzedur kopieren. Danach kannst du im TabBlatt in einer Zelle bspw =T2RName(B$1&"_"&C1) schreiben. Wenn in B1 Brot und in C1 Einkauf steht, erhältst du den entsprechenden Wert. Bezeichnet der Name einen Bereich aus mehreren Zellen musst du die udFkt in einer Matrixfml verwenden, wenn du alle Werte wiedergeben willst, z.B. so...
{=T2RName(B$1&"_"&C1)}
...und dabei die gewünschte/erforderliche Zellenanzahl in gleicher Richtung wie der Namensbezug (also ggf als Zeile oder Spalte) auswählen ({} wdn bei Eingabeabschluss mit [Strg][Umsch][Enter] automatisch erzeugt! Fml muss nur in die 1.Zelle der Auswahl eingegeben wdn!).
In Fmln wird in diesem Fall stets mit allen Werten des Namens gerechnet, also bspw...
=SUMME(T2RName(B$1&"_"&C1))
Einzige Bedingung für die Anwendung ist... Der Name muss im betroffenen TabBlatt definiert sein! Die udFkt kann keine neuen Namen kreieren!
Gruß + schöSo, Luc :-?

Anzeige
AW: Dazu benötigst du eine VBA-udFkt,...
21.06.2009 11:55:53
Peter
Hallo,
vielen Dank für die Funktion, allerdings hat sie ein paar Haken:
1. Gross/Kleinschreibung ist zu berücksichtigen
2. sie liefert mir nur den Wert aus der ersten Zelle des benannten Bereichs.
Meine Werte befinden sich aber "wild " verteilt auf dem Arbeitsblatt
Gruß
Peter
Dann benötigst du die advanced Vs von...
21.06.2009 12:17:07
Luc:-?
...T2RName, Peter,
die muss ich aber erst noch entwickeln... ;-)
Gruß Luc :-?
PS: Werde mal noch etwas mit SubRanges ausprobieren, ansonsten wäre ja auch Sepps Vorschlag fktnabel gewesen. Man sollte beim Fragen halt stets alle Bedingungen mitteilen...
Mögliche allgemeine Lösung auf Basis der...
22.06.2009 02:25:46
Luc:-?
...udF T2RName gefunden, Peter!
Dazu müsstest du wahrscheinlich nicht mal deine Tabelle ändern (die ich mir erst noch ansehen muss), sondern nur die Art wie du die Bereiche zu den Namen auswählst. Allerdings bedeutet das Nacharbeit bei jeder Erweiterung der Tabelle und erhöhten Arbeitsaufwand, wenn die Bereiche des Öfteren operativ geändert wdn sollten. Ansonsten würde sich der Mehraufwand ggf schon lohnen, da du so anstelle der Mehrfachauswahl-Bereiche (in VBA Areas), mit denen viele xlFktt nichts anfangen können (Beweis in der Abbildung), saubere Vektoren erhältst, die nur wenige xlFktt nicht verarbeiten können...
Userbild
Zum Vgl habe ich noch einige spezielle udF-Lösungen dargestellt, für dich relevant sind aber nur die schwarzen Formeln. Eine andere Möglichkeit sehe ich nicht, immerhin hat ja auch Sepp derweile eine Mini-udF bereitgestellt [was man sonst von ihm sieht, ist meist erheblich länger... ;-)].
Danke für den Hinweis mit der GB/KB-Sensibilität beim Namensvgl, die udF hat halt schon'n paar Jahre uff'm Buckel. Normalerweise setze ich ggf vorher alles Klein. Aber das kannst du ja beim Argument machen - Bsp ist auf der Abb zu sehen...
Gruß + schöWo, Luc :-?
Anzeige
OT: Der Mann, der nie schläft ;-) ? _oT
22.06.2009 02:36:30
NoNet
_oT = "ohne Text"
Mit dir hab' ich jetzt aber nicht mehr...
22.06.2009 03:27:09
Luc:-?
...gerechnet, NoNet,
du wolltest dich doch "bessern", damit du nicht immer so müde bist... ;-)
Ich muss ja morgen...äh...heute nicht so früh raus wie du!
Naja, wir sind dann halt wohl Herbers "Wächter der Nacht"... ;-)
Im Übrigen hat mich die Problemlösung so lange beschäftigt!
Gruß + schöWo, Luc :-?
OT: Der Mann, der nie schläft ;-) ? _oT
22.06.2009 02:36:36
NoNet
_oT = "ohne Text"
Bereichsnamen per INDIREKT() ansprechen
21.06.2009 07:42:44
Josef
Hallo Peter,
das geht mit INDIREKT().
Tabelle1

 ABCDEF
1483357  Brot 
2156155  137 
3280210  152 
4212386    
5375317    
6396284    
7305473    
8273394    
9225152    
10137152    

Formeln der Tabelle
ZelleFormel
E2=MIN(INDIREKT(E1&"_Einkauf"))
E3=MIN(INDIREKT(E1&"_Verkauf"))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Sepp

Anzeige
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 11:26:06
Peter
Hallo Sepp,
habe es probiert, aber leider funktioniert INDIREKT() scheinbar nur, wenn der Bereich aus zusammenhängenden Zesllen besteht. Der Bereischname, den ich verwende, bezieht sich aber auf verstreute Werte. Damit liefert dein Vorschlag immer nur die Meldung #Bezug.
Gruß
Peter
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 12:49:30
Josef
Hallo Peter,
dazu fält mir im Moment nichts ein, ausser das du vielleicht deinen Tabellenaufbau überdenken solltest.
Warum stehen die Zellen über das Blatt verstreut? Das hat nichts mit einer Exceltabelle zu tun und ist für die Auswertung meistens ungeeignet.
Gruß Sepp

Anzeige
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 15:42:10
Peter
Leider lässt sich die bestehende Tabelle aus organisatorischen und übersichtlichen Gründen nicht anders gestalten.
Ich habe mal ein vereinfachtes beispiel angehängt und erläutert. Vielleicht wird es dann ein wenig deutlicher.

Die Datei https://www.herber.de/bbs/user/62614.xlsx wurde aus Datenschutzgründen gelöscht


Gruß
Peter
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 16:44:19
Josef
Hallo Peter,
Wenn die Tabelle so https://www.herber.de/bbs/user/62616.xlsx aussieht, dann lässt sie sich auswerten.
Sonst bleibt nur die "Murkserei".
"Leider lässt sich die bestehende Tabelle aus organisatorischen und übersichtlichen Gründen nicht anders gestalten."
Mag schon sein, ist aber kein Argument, weil ersten sollte die Form der Funktion folgen und zweitens ist ein solcher Aufbau auch gefährlich, was passiert wenn sich einer beim "Zusammenfummeln" der Bereiche verklickt?
Gruß Sepp

Anzeige
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 16:57:41
Peter
Hallo Sepp,
das ist mir schon klar, aber versuche einmal verkrustete Strukturen aufzubrechen und das Argument "Das machen wir schon immer so" zu entkräften.
Und auch wenn die Tabelle umgestrickt wird, so ist die gezeigte Darstellung später wieder hinzubasteln, da diese Tabelle gedruckt archiviert wird und die Mitarbeiter sich an das Erscheinungsbild gewöhnt haben.
Man kann es drehen und wenden wie man will....auf Dauer wird es wohl doch ein längeres Projekt als von der Leitung gedacht.
Danke erst mal für deine Hilfe
Peter
Datei ist im "Herber-Raum" verschollen! orT
22.06.2009 03:35:02
Luc:-?
Gruß Luc :-?
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 13:12:02
Josef
Hallo Peter,
derweil eine einfach UDF die das lösen kann. Die Formeln in D9:D10 dienen nur zur Veranschaulichung der benannten Bereiche.
Tabelle1

 ABCDE
1496450  Brot
2158253  181
3353471  171
4474108   
5321482   
6323462   
7456360   
8445411   
9437412 496 
10171181 321 
11     

Formeln der Tabelle
ZelleFormel
E2=MIN(INDIREKT_DIS(E1&"_Einkauf"))
E3=MIN(INDIREKT_DIS(E1&"_Verkauf"))
D9=INDEX(Brot_Einkauf;1;1)
D10=INDEX(Brot_Verkauf;1;1)
Namen in Formeln
ZelleNameBezieht sich auf
D9Brot_Einkauf=Tabelle1!$A$1;Tabelle1!$B$2;Tabelle1!$A$3;Tabelle1!$B$6;Tabelle1!$A$8;Tabelle1!$B$10
D10Brot_Verkauf=Tabelle1!$A$5;Tabelle1!$B$3;Tabelle1!$B$5;Tabelle1!$B$7;Tabelle1!$B$8;Tabelle1!$A$10
Namen verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und dazu diese Funktion in ein Standard Modul.
Public Function INDIREKT_DIS(Bezug As String) As Range
  On Error Resume Next
  Set INDIREKT_DIS = Range(Bezug)
End Function

Gruß Sepp

Anzeige
AW: Bereichsnamen per INDIREKT() ansprechen
21.06.2009 15:51:38
Peter
Super, der erste Schritt ist getan. habe es in die Tabelle eingetragen und es klappt.
Danke
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige