Anzeige
Archiv - Navigation
1316to1320
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

Namen dynamisch definieren

Namen dynamisch definieren
11.06.2013 09:23:50
markus
Hallo zusammen,
stehe vor folgendem Problem.
Ich möchte verschiedene Namen definieren, die in einer Liste/ Tabellen stehen.
Die Liste sieht wie folgt aus:
Spalte
A B
AM 1
AM 2
AM 3
CG 4
CG 5
CG 6
Jetzt möchte ich für AM einen Namen definieren für alle Sätze / Zeilen in denen AM vorkommt. Gleiches dann für CG. Die Liste wird im Hintergrund aktualisiert, so das sich die Liste immer wieder verändert.
Hat jemand von euch einen Tipp?
VG
Markus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen dynamisch definieren
11.06.2013 09:40:51
mik
Moinsen, so vielleicht...
=WENN(A="AM";"NAME";A)
LG
Mik

AW: Namen dynamisch definieren
11.06.2013 09:43:45
Hajo_Zi
Hallo Markus,
ich würde ja für jeden Begriff eine Spalte benutzen. Dann ist es einfach. Bereich.Verschieben, mal im Archiv suchen.

AW: Namen dynamisch definieren
11.06.2013 09:55:33
Christian
Hallo Markus,
ein Ansatz, wenn fortlaufend die Buchtabenbezeichnungen auftauchen:
 ABC
1AM12
2AM25
3AM3 
4CG4 
5CG5 
6CG6 

Formeln der Tabelle
ZelleFormel
C1=MITTELWERT(AM)
C2=MITTELWERT(CG)
Namen in Formeln
ZelleNameBezieht sich auf
C1AM=INDEX(Tabelle1!$B:$B;MIN(WENN(Tabelle1!$A$1:$A$1000="AM";ZEILE(Tabelle1!$1:$1000)))):INDEX(Tabelle1!$B:$B;MAX(WENN(Tabelle1!$A$1:$A$1000="AM";ZEILE(Tabelle1!$1:$1000))))
C2CG=INDEX(Tabelle1!$B:$B;MIN(WENN(Tabelle1!$A$1:$A$1000="CG";ZEILE(Tabelle1!$1:$1000)))):INDEX(Tabelle1!$B:$B;MAX(WENN(Tabelle1!$A$1:$A$1000="CG";ZEILE(Tabelle1!$1:$1000))))
Namen verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
MfG Christian

Anzeige
AW: Namen dynamisch definieren
11.06.2013 09:55:45
Klaus
Hi Markus,
auf die schnelle könnte ich das so lösen. Hat bestimmt noch Verbesserungspotential.
Wenn du in deiner Mustertabelle das Makro "MakeAllNames" aufrufst, passiert folgendes:
es wird ein Name "Name_AM" erstellt, der den Bereich B1:B3 umfasst.
es wird ein Name "Name_CG" erstellt, der den Bereich B4:B6 umfasst.
änderst du jetzt die Mustertabelle folgendermaßen:
A B
AM 1
AM 2
AM 3
AM 4
CG 5
CG 6
XY 7
und rufst das Makro erneut auf, dann passiert folgendes:
der vorhanden Name "Name_AM" wird auf den Bereich B1:B4 umgeschrieben
der vorhanden Name "Name_CG" wird auf den Bereich B5:B6 umgeschrieben
es wird ein Name "Name_XY" erstellt, der den Bereich B7 umfasst.
Hier das Makro:
Option Explicit Const ErsteZeile As Long = 1 Const SpalteSuchString As Long = 1 Const SpalteErgebnisse As Long = 2 Const TabelleSuchen As String = "Sheet1" Sub MakeAllNames() Dim LastRow As Long Dim i As Range 'Geht jeden Wert in der Suchspalte durch, 'erstellt oder aktualisiert bei jedem ersten Vorkommen den dazugehörigen Namen With Sheets(TabelleSuchen) LastRow = .Cells(.Rows.Count, SpalteSuchString).End(xlUp).Row For Each i In .Range(.Cells(ErsteZeile, SpalteSuchString), .Cells(LastRow, SpalteSuchString) _ ) If WorksheetFunction.CountIf(.Range(.Cells(ErsteZeile, SpalteSuchString), .Cells(i.Row, _ SpalteSuchString)), i.Value) = 1 Then Call ReferNameNew(i.Value) End If Next i End With End Sub Sub ReferNameNew(SuchString As String) Dim ZeileVon As Long Dim ZeileBis As Long Dim r As Range With Sheets(TabelleSuchen) 'Zeilen von-bis ermitteln, in Range übergeben ZeileVon = WorksheetFunction.Match(SuchString, .Cells(1, SpalteSuchString).EntireColumn, _ False) ZeileBis = -1 + ZeileVon + WorksheetFunction.CountIf(.Cells(1, SpalteSuchString). _ EntireColumn, SuchString) Set r = .Range(.Cells(ZeileVon, SpalteErgebnisse), .Cells(ZeileBis, SpalteErgebnisse)) End With 'vorhandenen Namen erweitern. Falls Name nicht vorhanden, neuen Namen anlegen. On Error GoTo hell ActiveWorkbook.Names("Name_" & SuchString).RefersToR1C1 = "=" & TabelleSuchen & "!" & r.Address( _ ReferenceStyle:=xlR1C1) On Error GoTo 0 GoTo heaven hell: ActiveWorkbook.Names.Add Name:="Name_" & SuchString, RefersToR1C1:="=" & TabelleSuchen & "!" & _ r.Address(ReferenceStyle:=xlR1C1) heaven: End Sub Achtung! Ich gehe davon aus, dass die Tabelle sortiert ist wie im Beispiel! Solltest du eine solche Tabelle haben:
A B
AM 1
AM 2
AM 3
CG 5
AM 4
CG 6
wird das Makro die Namen "irgendwie" definieren, aber nicht korrekt.
Die Liste wird im Hintergrund aktualisiert, so das sich die Liste immer wieder verändert.
Entweder, du rufst bei jeder Änderung im Hintergrund von Hand das Makro MakeAllNames auf, oder du schreibst einen Call der es automatisch macht - wo das Sinn macht musst du entscheiden. Ich sag mal, immer beim öffnen der Tabelle sollte reichen? Dann Callst du das Makro aus "Workbook_Open".
Grüße,
Klaus M.vdT.

Anzeige
AW: Namen dynamisch definieren
11.06.2013 13:06:45
Rudi
Hallo,
die Liste muss sortiert sein.
Name: AM
Bezug: =INDEX(Tabelle1!$A:$A;VERGLEICH("AM";Tabelle1!$A:$A;)):INDEX(Tabelle1!$A:$A;VERGLEICH("AM";Tabelle1!$A:$A;)+ZÄHLENWENN(Tabelle1!$A:$A;"AM")-1)
Gruß
Rudi

AW: Namen dynamisch definieren
12.06.2013 08:46:10
markus
Hallo zusammen,
eure Antworten waren wir eine grosse Hilfe.
Vielen Dank.
Ein sonnigen schönen Tasg wünscht euch
Markus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige