Verweis auf Zellen in anderem Blatt
Hallo!
Folgende Frage an die „Excelenten“:
In einer Mappe finden sich zwei Blätter in denen mittels Hyperlinks von bestimmten Zellen des einen auf bestimmte Zellen des anderen und zurück verwiesen werden soll. (s. unten) Das Erstellen der Zellbezüge manuell ist mir klar, aber lässt sich das automatisieren?
und so soll es sein:
Bl.1 <-> Bl.2
C2 <-> A3
E2 <-> A4
G2 <-> A5
I2 <-> A6
K2 <-> A7
...
Vielen Dank für die Hilfe!
.w
Antwort schreiben
Antwort 1 von boarder vom 25.11.2019, 15:56 Options
Hallo wjw,
kannst Du die Ansicht der beiden Blätter nicht angleichen?
D.h. beide Arbeitsblätter horizontal oder beide Arbeitsblätter vertikal.
Bsp:
Bl.1 <-> Bl.2
C3 <-> A3
C4 <-> A4
C5 <-> A5
C6 <-> A6
C7 <-> A7
...
Dann brauchts Du nur in einer Zelle den Bezug manuell herzustellen und Kannst anschließend die Formel kopieren.
Gruß boarder
Antwort 2 von wjw vom 25.11.2019, 16:01 Options
hallo boarder,
ja, wenn das ginge, wärs ja einfach. Leider muß diese Struktur aber so bleiben! Danke trotzdem.
.w
Antwort 3 von wjw vom 27.11.2019, 09:58 Options
hallo Leute,
ich bin nochmal so frei ...
ist das wirklich sooo schwierig? Niemand ne Idee?
Gruß+Dank,
.w
Antwort 4 von coros vom 27.11.2019, 10:35 Options
Hallo wjw,
eventuell liegt es ja daran, dass niemand so richtig verstanden hat, was genau Du möchtest. Jedenfalls geht es mir so. Ich habe nicht verstanden, was Du möchtest.
Erklär das doch bitte mal an einem Beispiel, was Du meinst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von wjw vom 27.11.2019, 11:25 Options
ok, danke coros für das feed back.
also ich möchte mittels Link (innerhalb Excel heißt das vielleicht anders)
bei Anklicken einer bestimmten Zelle in Blatt 1 zu einer bestimmten Zelle in Blatt2 gelangen (und von dort mittels Klick auch wieder zurück). Soweit, so einfach. Diesen "link" kann ich manuell eingeben (Rechtsklick->Hyperlink-> etc.)
Da ich jedoch sehr viele solcher links einfügen muss, suche ich nach einer Lösung, die das Verfahren beschleunigt. Das wird durch die Tatsache erschwert, dass diese Zellbezüge nicht einem einfachen Muster folgen, sondern in Blatt 1 stehen alle in der gleichen Zeile (sagen wir in 2) aber nicht in angrenzenden Spalten, sondern in der übernächsten, also in C, E, G, I, K usw., die Ziele auf Blatt2 sind dann aber in einer Spalte untereinander. Also:
[Bl.1 <-> Bl.2]
C2 <-> A3
E2 <-> A4
G2 <-> A5
I2 <-> A6
K2 <-> A7
ist das Problem jetzt verständlicher?
sorry, wenn ich unpräzise war.
Dank+Gruß,
.w
Antwort 6 von coros vom 27.11.2019, 11:50 Options
Hallo wiw,
sorry, aber mir fällt dazu im Moment leider nichts Produktives ein, da ich das so sehe, dass ein Automatismus für dieses Problem nicht erstellt werden kann. Denn woher soll das Makro wissen, welches Blatt aufgerufen und welche Zelle beim Anklicken einer anderen Zelle markiert werden soll? Wenn es eine Regelmäßigkeit irgendwo in Deiner Datei gäbe, die ich aber bei dem was Du schreibst, eher nicht sehe, könnte man da sicherlich etwas über eine Schleife realisieren. Aber wenn die Daten, die man für die Links benötigt, wild im Tabellenblatt vorkommen, geht das nicht.
Sollte da niemand eine Idee haben, wird Dir wohl nichts anderes als Handarbeit übrig bleiben.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
,
Antwort 7 von rainberg vom 27.11.2019, 15:15 Options
Hallo wjw,
folgender Code fügt Dir in Zeile 2 von Tabelle1 (jede 2. Spalte) einen Hyperlink ein, der zu Tabelle2 Spalte A, beginnend ab A3 springt.
Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
intZ = 3
For intI = 3 To 20 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Tabelle2!A" & intZ, TextToDisplay:="A" & intZ
intZ = intZ + 1
Next
End Sub
Den Endwert der For-Next-Schleife (20) kannst Du nach Bedarf anpassen.
Gruß
Rainer
Antwort 8 von coros vom 27.11.2019, 15:24 Options
Hallo Rainer,
ich glaube ich war heute vormittag schon das erste mal wieder müde. Irgendwie hatte ich nicht richtig verstanden, wie die Frage gemeint war, bzw. anders interpretiert. Durch Dein Makro habe ich es jetzt aber gerafft und das Makro sollte das machen, was sich wjw vorgestellt hat.
Schönen Gruß, von dem nun aber wieder aufgeachten Oliver. ;-)
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 9 von rainberg vom 27.11.2019, 15:42 Options
Hallo Oliver,
da kannst Du ja gleich den Rücksprung von den Zellen der Tabelle2 zu den Zellen der Tabelle1 noch programmieren, dann ist die Sache komplett.
Hab im Moment keine Zeit.
Gruß
Rainer
Antwort 10 von wjw vom 27.11.2019, 17:29 Options
na, da seh ich doch Licht!
Danke Rainer und auch dir Oliver fürs anscheinend produktive pennen ;-}
Natürlich muss ich euch noch gestehen, dass ich von all dem was ihr schreibt nicht wirklich Ahnung habe. Werde mich aber damit befassen und versuchen zu verstehen, worum es geht.
Die Sache mit dem Rücksprung wäre allerdings wirklich sehr nett, wenn da nochmal jemand weiterhelfen könnte?
Also vielen Dank noch mal an alle Beteiligten. ich probier mal rum und melde mich wieder.
Gruß,
Werner
Antwort 11 von rainberg vom 27.11.2019, 19:19 Options
Hallo Werner,
habe Dir den Rücksprung noch dazu gebastelt.
In einer Inputbox kannst Du eingeben, wieviel Hyperlinks Du erzeugen willst.
Oliver hätte es vielleicht eleganter gamacht, aber was soll's, es läuft.
Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer, intAnz As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
intAnz = InputBox("Wieviel Hyperlinks?") + 2
intZ = 3
ws1.Select
For intI = 3 To (intAnz - 1) * 2 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Tabelle2!A" & intZ, TextToDisplay:="A" & intZ
intZ = intZ + 1
Next
ws2.Select
For intI = 3 To intAnz
Cells(intI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Tabelle1!" & Chr(60 + intI * 2 + 1) & "2", TextToDisplay:=Chr(60 + intI * 2 + 1) & "2"
Next
End Sub
Gruß
Rainer
Antwort 12 von wjw vom 27.11.2019, 23:17 Options
Hallo Rainer,
besten Dank für deine Mühe! Leider kann ich nicht so viel damit anfangen.
Hab also dein Makro(?) kopiert und in meine Datei eingefügt.
(Alt+F11 dann in beide Blätter)
Leider müscht!
Da ich jetzt so nicht weiter komme, habe ich die Datei: test_wjw.xls mal von allen unnötigen Daten gesäubert und veröffentlicht:
http://www.netupload.de/detail.php?img=61c6ccf2cb9273662527051770ca...Die Struktur ist aber erhalten; ich möchte also in Tabelle1 per Klick von den Zellen mit fortlaufenden Ziffern (in Zeile2) zur jeweils gleichen Ziffer (Spalte1) im anderen Blatt springen können und zurück. Aber das war ja schon klar.
Eine genauere Anleitung dazu würde mir doch sehr weiterhelfen.
Vielen Dank nochmal,
werner
Antwort 13 von rainberg vom 27.11.2019, 23:53 OptionsLösung
Hallo Werner,
habe Dir das Makro eingebaut und einen Startbutton eingefügt.
Nach dem Starten kannst Du in der InputBox eingeben wieviel Hyperlinks eingefügt werden sollen.
Ich hatte das Makro noch mal geändert, weil es bei mehr als 26 Hyperlinks logischerweise falsche Spaltenbuchstaben geliefert hat.
http://www.netupload.de/detail.php?img=54838eb14d6da72f34907901307d...Gruß
Rainer
Antwort 14 von wjw vom 28.11.2019, 00:14 Options
wow!!
das flutscht ja ganz schön!
alle Achtung und besten Dank, Rainer.
eine Kleinigkeit tät ich mir noch wünschen:
ist es denn auch möglich in den verlinkten Zellen einfach nur 1, 2, 3, usw. drinstehen zu haben, oder muss ich dafür eine Hilfszeile/-spalte benutzen?
Nochmal vielen, vielen Dank für deine schnelle Hilfe,
Gruß,
.w
Antwort 15 von rainberg vom 28.11.2019, 07:35 Options
Hallo Werner,
das ist kein Problem, im Gegenteil, das vereinfacht den Code sogar noch.
Lösche den alten Code gänzlich und füge den folgenden dafür ein.
Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer, intAnz As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("2007")
Set ws2 = Worksheets("Übersicht")
intAnz = InputBox("Wieviel Hyperlinks?") + 2
intZ = 3
Application.ScreenUpdating = False
ws1.Select
For intI = 3 To intAnz * 2 - 2 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Übersicht!A" & intZ, TextToDisplay:="" & intZ - 2
intZ = intZ + 1
Next
ws2.Select
For intI = 3 To intAnz
Cells(intI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="2007!" _
& intI, TextToDisplay:="" & intI - 2
Next
ws1.Select
Range("A5").Select
Application.ScreenUpdating = True
End Sub
Gruß
Rainer
Antwort 16 von wjw vom 28.11.2019, 09:25 Options
Guten Morgen, Rainer
danke für die schnelle Antwort. Hast du's ausprobiert? Bei mir läufts nicht ganz rund: Von Tab1 zu Tab2 kein Problem aber beim Rücksprung kommt immer die Meldung "Bezug ist ungültig" Die Quickinfo zeigt, dass bei der "Adresse" kein Buchstabe, sondern nur eine Zahl drin ist.
Da stimmt noch was nicht ganz.
Gruß, Werner
Antwort 18 von wjw vom 28.11.2019, 16:18 Options
Entschuldige Rainer, wenn ich dich nochmal nerve!
Ich bin sicher du kannst mir noch zwei Petitessen ausbügeln:
1. in deiner letzten Datei funktioniert zwar das Hin und Her sehr gut, aber leider beginnt die Liste die durch das Makro erstellt wird mit "3" und ich habe es nicht geschafft das zu ändern. Also alles ist ok wie es ist, aber statt 3, 4, 5, ... sollte (beginnend an der gleichen Stelle, also C2 bzw. A3)
1, 2, 3, ... stehen.
Ist das möglich? und wo genau ist das im Code definiert?
2. Ich habe versucht deinen Code in eine angepasste Datei zu kopieren und habe wegen der Umbennung des Blattes in "2008" zwei Stellen im Code von "2007" zu "2008" geändert (unten fett markiert). Trotzdem geht dann der Rücksprung nicht mehr. Was hab ich da falsch gemacht?
Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer, intAnz As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("[b]2008[/b]")
Set ws2 = Worksheets("Übersicht")
Application.ScreenUpdating = False
Range("A2003").FormulaR1C1 = "=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"""")"
Range("A2002").FormulaR1C1 = "=COLUMN()"
Range("A2002:A2003").Copy
Rows("2000:2001").Select
ActiveSheet.Paste
intAnz = InputBox("Wieviel Hyperlinks?") + 2
intZ = 3
ws1.Select
For intI = 3 To intAnz * 2 - 2 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Übersicht!A" & intZ, TextToDisplay:="" & intZ
intZ = intZ + 1
Next
ws2.Select
For intI = 3 To intAnz
Cells(intI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="[b]2008[/b]!" _
& WorksheetFunction.HLookup(intI * 2 - 3, Rows("2000:2001"), 2, 0) & "2", _
TextToDisplay:="" & intI
Next
ws1.Select
Rows("2000:2003").Clear
Range("A5").Select
Application.ScreenUpdating = True
End Sub
Nochmal 1000Dank!
w.
ich würd dir ja die Datei schicken, die ist jetzt aber nicht mehr "leer" und irgendwann muss ich's ja auch mal selbst hinkriegen! ;-}
Antwort 19 von rainberg vom 28.11.2019, 16:39 Options
Hallo Werner,
folgender Code ist an 4 Stellen geändert (fett markiert) und getestet.
Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer, intAnz As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("[b]2008[/b]")
Set ws2 = Worksheets("Übersicht")
Application.ScreenUpdating = False
Range("A2003").FormulaR1C1 = "=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"""")"
Range("A2002").FormulaR1C1 = "=COLUMN()"
Range("A2002:A2003").Copy
Rows("2000:2001").Select
ActiveSheet.Paste
intAnz = InputBox("Wieviel Hyperlinks?") + 2
intZ = 3
ws1.Select
For intI = 3 To intAnz * 2 - 2 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Übersicht!A" & intZ, TextToDisplay:="" & intZ [b]- 2[/b]
intZ = intZ + 1
Next
ws2.Select
For intI = 3 To intAnz
Cells(intI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="[b]2008[/b]!" _
& WorksheetFunction.HLookup(intI * 2 - 3, Rows("2000:2001"), 2, 0) & "2", _
TextToDisplay:="" & intI [b]- 2[/b]
Next
ws1.Select
Rows("2000:2003").Clear
Range("A5").Select
Application.ScreenUpdating = True
End Sub
Gruß
Rainer
Antwort 20 von wjw vom 28.11.2019, 16:45 Options
super!!!
ganz herzlichen Dank.
Gruß, .w