VBA Code für Verweis

Moderator: ModerationP

VBA Code für Verweis

Beitragvon bruepas » 28. Jan 2015, 07:52

Guten Tag

Ich habe nochmal eine Frage zur Folgenden Tabelle

VBA.GIF


Ich möchte gerne per Makro folgende Funktion einfügen.

Der Bereich B2:G5 soll ausgewertet werden:

Bsp. Wenn B2 = "t" dann WVERWEIS("t", $J$2:$M$7; C2+2) für B2 soll also 5 als Wert ausgegeben werden.

Die Summe aller ausgewerten Werte für "t" sollen in E8 ausgegeben werden. (im Bild manuel summiert).

Dies soll für alle Buchstaben so gemacht werden.

Hoffe ihr könnt mir da helfen

Verschoben nach Excel. steve1da
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
bruepas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 21
Registriert: 26. Jan 2015, 08:47

Re: VBA Code für Verweis

Beitragvon bst » 28. Jan 2015, 10:06

Hi,

ich würde die Datentabelle B2:G5 2-spaltig machen, in B die Buchstaben, in C die Zahlen.

Dann kannst Du in D eine Hilfsspalte mit einer INDEX-Formel bzw. Deiner WVERWEIS-Formel die Werte der gelben Tabelle auslesen (tabWerte), in der Art:

Code: Alles auswählen
=INDEX(tabWerte;VERGLEICH(C3;tabIndex;0);VERGLEICH(B3;tabName;0))


mit tabIndex = 1. Spalte von tabWerte, tabName = 1. Zeile von tabWerte.

und Deine Summen einfach via SUMMEWENN bestimmen, mit "k" in G10:

Code: Alles auswählen
=SUMMEWENN($B$3:$B$14;G$10;$D$3:$D$14)


Siehe Anhang.

HTH, Bernd
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
bst
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14046
Registriert: 29. Sep 2005, 14:22
Wohnort: Ilsfeld

Re: VBA Code für Verweis

Beitragvon bruepas » 28. Jan 2015, 12:16

Erstmal danke

Leider ist die daten tabelle in mehreren spalten und kann nicht verändert werden.

Und ich würde das ganze gerne als VBA Makro lösen.

Kannst du mir da weiterhelfen
bruepas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 21
Registriert: 26. Jan 2015, 08:47

Re: VBA Code für Verweis

Beitragvon bst » 28. Jan 2015, 14:17

Hi,

der Tabellenaufbau ist M.E. unvernünftig. Aber wenn Du das denn unbedingt so haben willst, ein denkbarer Ansatz s.u.

cu, Bernd
--
Code: Alles auswählen
Option Explicit

Sub x()
   Dim i As Long, j As Integer
   Dim rngName As Range, rngIndex As Range, rngDst As Range
   
   Range("B8:D8").Value = 0
   For i = 2 To 5
      For j = 2 To 6 Step 2
         Set rngName = Range("K2:N2").Find(What:=Cells(i, j).Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
         Set rngIndex = Range("J3:J7").Find(What:=Cells(i, j + 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
         Set rngDst = Range("B7:E7").Find(What:=Cells(i, j).Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
         If Not rngName Is Nothing And Not rngIndex Is Nothing And Not rngDst Is Nothing Then
            rngDst.Offset(1).Value = rngDst.Offset(1).Value + Cells(rngIndex.Row, rngName.Column).Value
         End If
      Next j
   Next i
End Sub
bst
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14046
Registriert: 29. Sep 2005, 14:22
Wohnort: Ilsfeld


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste