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

Index-Vergleich-als Makro

Index-Vergleich-als Makro
20.02.2009 11:25:00
Klaus
Hallo,
ich habe ein ExcelSheet in dem die Tabellen mit "Gemüsesorten" beschriftet sind und die Zeilen mit "Gewichtseinheiten". Da auf jedem Tabellenblatt die entsprechende Zeile und Spalte nicht an der gleichen Stelle steht, brauche ich ein Makro, das mir in einer von mir vorgegebenen Zelle den Wert einträgt, den bspw. Spalte Tomate bei der Gewichtseinheit 5Kg anzeigt.
(die Funktion Index und Vergleich geht nicht, da ich keinen festen Bereich habe, sondern diesen erst per Makro ...usedrange..offset ermitteln muss)
ich habe schonmal angefangen und das makro zeigt mir auch die Zellenaddresse in der der Wert steht.
Ich kann diesen Wert aber nicht ein eine andere Zelle kopieren. Wie bekomme ich den Wert den diese Zelle hat ausgelesen?

Sub Zellenwertfinden()
Dim Zeile As Long
Dim ZeileMax As Long
Dim zellenbereichGewicht As Range
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = 1 To ZeileMax
If .Cells(Zeile, 1).Value = "5KG" Then
Set zellenbereichGewicht = .Rows(Zeile)
Debug.Print zellenbereichGewicht.Address
Else
.Rows(Zeile).Hidden = False
End If
Next Zeile
'Spalte ausfindig machen!!!!!!!!!!!!
Dim spalte As Integer
Dim SpalteMax As Integer
Dim SpaltenbereichGemuese As Range
SpalteMax = .UsedRange.Columns.Count
For spalte = SpalteMax To 1 Step -1
If .Cells(1, spalte).Value = "Tomate" Then
Set SpaltenbereichGemuese = .Columns(spalte)
Debug.Print SpaltenbereichGemuese.Address
Else
.Columns(spalte).Hidden = False
End If
Next spalte
End With
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index-Vergleich-als Makro
20.02.2009 12:44:00
D.Saster
Hallo,
warum sollte das nicht per Formel gehen?
=sverweis("5kg";tabelle1!A:Z;vergleich("Tomate";Tabelle1!1:1;0))
Gruß
Dierk
AW: Index-Vergleich-als Makro
20.02.2009 12:50:00
Uwe
Hi Klaus,
das Ganze geht zwar kürzer und effizienter, und bestimmt wird Dir hier im Forum auch noch jemand einen optimierten Code zeigen, aber ich habe mal Deinen Code so angepasst, dass er Dir am Ende über debug.print den gesuchten Wert anzeigen sollte.

Sub Zellenwertfinden()
Dim Ergebnis As String
Dim Zeile As Long
Dim ZeileMax As Long
Dim zellenbereichGewicht As Long
With Tabelle3
ZeileMax = .UsedRange.Rows.Count
For Zeile = 1 To ZeileMax
If .Cells(Zeile, 1).Value = "5KG" Then
zellenbereichGewicht = Zeile
Debug.Print zellenbereichGewicht
Else
.Rows(Zeile).Hidden = False
End If
Next Zeile
'Spalte ausfindig machen!!!!!!!!!!!!
Dim spalte As Integer
Dim SpalteMax As Integer
Dim SpaltenbereichGemuese As Long
SpalteMax = .UsedRange.Columns.Count
For spalte = SpalteMax To 1 Step -1
If .Cells(1, spalte).Value = "Tomate" Then
SpaltenbereichGemuese = spalte
Debug.Print SpaltenbereichGemuese
Else
.Columns(spalte).Hidden = False
End If
Next spalte
End With
On Error Resume Next
Debug.Print Cells(zellenbereichGewicht, SpaltenbereichGemuese).Value
End Sub


Habe im Moment keine Zeit mehr, muss zur Arbeit, schau aber heute abend nochmal rein und melde mich, falls Dir sonst niemand weitergehofen hat.
Gruß
Uwe
(:o)

Anzeige
AW: Index-Vergleich-als Makro
20.02.2009 12:59:00
Erich
Hi Klaus,
was hat es mit den Zeilen
.Rows(Zeile).Hidden = False
.Columns(spalte).Hidden = False
auf sich?
Da werden alle Zeilen/Spalten eingeblendet, in denen der Suchebegriff NICHT gefunden wurde. Soll dat?
Hier ein Code, der mit VERGLEICH (=Match) arbeitet:

Option Explicit
Sub Zellenwertfind()
Dim varM As Variant, lngZe As Long, lngSp As Long
With Tabelle1
'Zeile ausfindig machen
varM = Application.Match("5KG", .Columns(1), 0)
If IsError(varM) Then
MsgBox "'5KG' nicht in Spalte A gefunden"
Exit Sub
Else
lngZe = CLng(varM)
End If
'Spalte ausfindig machen
varM = Application.Match("Tomate", .Rows(1), 0)
If IsError(varM) Then
MsgBox "'Tomate' nicht in Zeile 1 gefunden"
Exit Sub
Else
lngSp = CLng(varM)
End If
'Ausgabe
MsgBox .Cells(lngZe, lngSp)
End With
End Sub

Aber wie Dierk schon schrieb: Nur mit Formel - ohne VBA - ginge das auch.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Makro angepasst und funktioniert. Danke
20.02.2009 13:59:00
Klaus
Makro angepasst und funktioniert. Danke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige