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

Makro Frage

Makro Frage
11.11.2008 10:53:10
Micha
Moin zusammen.
Habe mir mal folgendes Makro zusammengebastelt:

Sub Indexformel()
Range("H2").Select
Selection.FormulaArray = _
"=INDEX('CSV-Datei'!RC[-1]:R[13]C[-1],MATCH(RC1,'CSV-Datei'!RC[-6]:R[13]C[-6]&""_""&' _
CSV-Datei'!RC[-5]:R[13]C[-5],0))"
Range("I2").Select
Selection.FormulaArray = _
"=INDEX('CSV-Datei'!RC[-3]:R[13]C[-3],MATCH(RC1,'CSV-Datei'!RC[-7]:R[13]C[-7]&""_""&' _
CSV-Datei'!RC[-6]:R[13]C[-6],0))"
Range("J2").Select
Selection.FormulaArray = _
"=INDEX('CSV-Datei'!RC[-5]:R[13]C[-5],MATCH(RC1,'CSV-Datei'!RC[-8]:R[13]C[-8]&""_""&' _
CSV-Datei'!RC[-7]:R[13]C[-7],0))"
Range("H2:J2").Select
Selection.AutoFill Destination:=Range("H2:J6")
Range("H2:J6").Select
Range("H2").Select
Range("H2:J2").Select
Selection.AutoFill Destination:=Range("H2:J6")
Range("H2:J6").Select
Selection.Copy
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H2").Select
Application.CutCopyMode = False
End Sub


Jetzt ist es aber so, das das im Makro angegebene CSV-Datei Tabellenblatt immer von unterschiedlicher Länge ist. Mal enthält es nur 30 Zeilen, manchmal geht aber auch in den hohen 4stelligen Zeilenbereich. Die Spaltenanzahl ist dagegen immer gleich.
Gibt es eine Möglichkeit, dem Makro zu sagen, des es immer die volle Zeilenanzahl erkennt?
Leider hat es auch nichts gebracht, als ich während der Formeleingaben die Bereiche mit STRG+SHIFT+ENDE ausgewählt habe.
Danke.
Gruss..Micha

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Frage
11.11.2008 11:12:00
Rudi
Hallo,
versuchs mal so:

Sub Indexformel()
Dim lngRow As Long
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 8), Cells(lngRow, 8)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-1]:R[13]C[-1],MATCH(RC1,'CSV-Datei'!RC[-6]:R[13]C[-6]&""_""&'  _
CSV -Datei '!RC[-5]:R[13]C[-5],0))"
Range(Cells(2, 9), Cells(lngRow, 9)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-3]:R[13]C[-3],MATCH(RC1,'CSV-Datei'!RC[-7]:R[13]C[-7]&""_""&'  _
CSV -Datei '!RC[-6]:R[13]C[-6],0))"
Range("J2").Select
Range(Cells(2, 10), Cells(lngRow, 10)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-5]:R[13]C[-5],MATCH(RC1,'CSV-Datei'!RC[-8]:R[13]C[-8]&""_""&'  _
CSV -Datei '!RC[-7]:R[13]C[-7],0))"
Range(Cells(2, 8), Cells(lngRow, 10)).Value = Range(Cells(2, 8), Cells(lngRow, 10)).Value
End Sub


Gruß
Rudi

Anzeige
AW: Makro Frage
11.11.2008 12:18:56
Micha
Hallo Rudi,
wenn ich deinen Makro ausführe, öffnet Excel immer ein Fenster und möchte die CSV Datei laden. Aber "CSV-Datei" ist der Name eines Tabellenblattes in der Datei Gesamt-2.xls, keine eigenständige Exceldatei.
Gruss..Micha
AW: Leerzeichen im Blattnamen
11.11.2008 12:35:40
Erich
Hallo Micha,
da haben sich - vielleicht durch die Foren-Software - ein paar Leezeichen eingeschlichen,
statt 'CSV-Datei' steht da z. B. 'CSV -Datei ' - und dann will Excel sich dieses Blatt beschaffen..
Probier mal

Sub Indexformel()
Dim lngRow As Long
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 8), Cells(lngRow, 8)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-1]:R[13]C[-1]," & _
"MATCH(RC1,'CSV-Datei'!RC[-6]:R[13]C[-6]&""_""&" & _
"'CSV-Datei'!RC[-5]:R[13]C[-5],0))"
Range(Cells(2, 9), Cells(lngRow, 9)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-3]:R[13]C[-3]," & _
"MATCH(RC1,'CSV-Datei'!RC[-7]:R[13]C[-7]&""_""&" & _
"'CSV-Datei'!RC[-6]:R[13]C[-6],0))"
Range(Cells(2, 10), Cells(lngRow, 10)).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-5]:R[13]C[-5]," & _
"MATCH(RC1,'CSV-Datei'!RC[-8]:R[13]C[-8]&""_""&" & _
"'CSV-Datei'!RC[-7]:R[13]C[-7],0))"
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
Range("J2").Select ' wird Select gebraucht?
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Leerzeichen im Blattnamen
11.11.2008 12:45:00
Micha
Hallo Erich,
danke für den Tipp. Ich hab das geändert und jetzt geht der Makro, aber leider berechnet er nicht richtig.
Er füllt mir in alle Zeilen die selben Werte und das ist nicht korrekt.
Der Makro soll ja in die Zellen H2, I2 und J2 jeweils die Indexformel reinschreiben. Dann diese 3 Zellen markieren und bis zum letzten Wert nach unten kopieren.
Gruss..Micha
Berechnung auf manuell? owT
11.11.2008 12:56:00
Rudi
AW: Leerzeichen im Blattnamen
11.11.2008 13:18:00
Erich
Hallo Micha,
stimmt, da haben wir etwas übersehen: Wenn man in einen mehrzelligen Bereich eine Arrayformel schreibt,
steht in allen Zellen die gleiche Formel. Das soll hier aber nicht so sein.
Probier mal

Sub Indexformel()
Dim lngRow As Long
Cells(2, 8).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-1]:R[13]C[-1]," & _
"MATCH(RC1,'CSV-Datei'!RC[-6]:R[13]C[-6]&""_""&" & _
"'CSV-Datei'!RC[-5]:R[13]C[-5],0))"
Cells(2, 9).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-3]:R[13]C[-3]," & _
"MATCH(RC1,'CSV-Datei'!RC[-7]:R[13]C[-7]&""_""&" & _
"'CSV-Datei'!RC[-6]:R[13]C[-6],0))"
Cells(2, 10).FormulaArray = _
"=INDEX('CSV-Datei'!RC[-5]:R[13]C[-5]," & _
"MATCH(RC1,'CSV-Datei'!RC[-8]:R[13]C[-8]&""_""&" & _
"'CSV-Datei'!RC[-7]:R[13]C[-7],0))"
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
Range("J2").Select ' wird Select gebraucht?
End Sub

Soll der der durchsuchte Bereich in CSV-Datei mit den Formelzeilen Wandern?
Wenn nein, müsste er absolut adressiert werden, statt
RC[-1]:R[13]C[-1]
etwa
R2C[-1]:R14C[-1]
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Leerzeichen im Blattnamen
11.11.2008 13:37:00
Micha
Hallo,
muss ich gleich mal ausprobieren:-)
Die Formelzeilen sollten eigentlich nicht wandern.
Hier mal die Indexformel ausgeschrieben: ~=INDEX(CSV!$G$2:$G$1001;VERGLEICH($A2;CSV!$B$2:$B$1001&"_"&CSV!$C$2:$C$1001;0))~ plus natürlich dann die eckigen Klammern.
Ich meld mich dann nochmal.
Gruss..Micha
AW: Leerzeichen im Blattnamen
11.11.2008 13:54:00
Micha
Hallo,
funzt leider irgendwie nicht. Kommt immer Laufzeitfehler 1004, Die FormulaArray-Eigenschaften des Range-Objektes kann nicht festgelegt werden. Hab danach die Formel geändert wegen der absoluten Adressierung und sie sieht jetzt so aus:

Sub Indexformel4()
Dim lngRow As Long
Cells(2, 8).FormulaArray = _
"=INDEX('CSV'!RC-1:R13C-1,MATCH(RC1,'CSV'!RC-6:R13C-6&""_""&'CSV'!RC-5:R13C-5,0))"
Cells(2, 9).FormulaArray = _
"=INDEX('CSV'!RC-3:R13C-3,MATCH(RC1,'CSV'!RC-7:R13C-7&""_""&'CSV'!RC-6:R13C-6,0))"
Cells(2, 10).FormulaArray = _
"=INDEX('CSV'!RC-5:R13C-5,MATCH(RC1,'CSV'!RC-8:R13C-8&""_""&'CSV'!RC-7:R13C-7,0))"
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
Range("J2").Select ' wird Select gebraucht?
End Sub


Ist doch noch korrekt so, oder? Weil Fehlermeldung kommt weiterhin.
@Rudi
Berechnung ist nicht auf Manuell.
Gruss..Micha

Anzeige
AW: Leerzeichen im Blattnamen
11.11.2008 14:49:23
Erich
Hi Micha,
zu absoluten Adressen kommt man nicht einfach durch das Weglassen der eckigen Klammern.
RC-1 oder R13C-1 sind keine gültigen Bereichskennungen.
Zeichne doch einfach mal auf, wenn du die folgende Formel in Excel eingibst:
 H
1 
2a

Formeln der Tabelle
ZelleFormel
H2{=INDEX(CSV!$G$2:$G$15;VERGLEICH($A2;CSV!$B$2:$B$15&"_"&CSV!$C$2:$C$15;0))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Dabei kommt das raus:

Cells(2, 8).FormulaArray = _
"=INDEX(CSV!R2C7:R15C7,MATCH(RC1,CSV!R2C2:R15C2&""_""&CSV!R2C3:R15C3,0))"


Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Leerzeichen im Blattnamen
11.11.2008 15:16:22
Micha
Hallo Erich,
jupp, hatte ich mir schon gedacht.
Hab jetzt die Formel nochmal eingegeben und dabei kam folgendes raus:

Sub Indexformel5()
Selection.FormulaArray = _
"=INDEX(CSV!R2C7:R462C7,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.FormulaArray = _
"=INDEX(CSV!R26C6:R462C6,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.FormulaArray = _
"=INDEX(CSV!R2C5:R462C5,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, -2).Range("A1").Select
End Sub


Die $-Zeichen musste ich allerdings nachträglich eingeben, während der Eingabe hat Excel das nicht zugelassen. Habe die $-Zeichen aber eingetragen bevor ich die Formel mit Strg+Shift+Enter abgeschlossen habe.
Das bei dir stehende Cells (2, 8). erscheint nicht. Kann ich Selection einfach mit Cells ersetzen?
Micha

Anzeige
AW: Leerzeichen im Blattnamen
11.11.2008 18:02:00
Erich
Hi Micha,
ja, wenn die Formel in H2 stehen soll, kannst du Selection durch Cells(2, 8) ersetzen.
Sonst ist wohl jetzt alles klar, oder?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Leerzeichen im Blattnamen
12.11.2008 12:27:34
Micha
Hi Erich,
so sieht jetzt der fertige und funktionierende Makro bei mir aus:

Sub IndexformelErstellen()
Range("H2").Select
Cells(2, 8).FormulaArray = _
"=INDEX(CSV!R2C7:R462C7,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Cells(2, 9).FormulaArray = _
"=INDEX(CSV!R26C6:R462C6,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Cells(2, 10).FormulaArray = _
"=INDEX(CSV!R2C5:R462C5,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, -2).Range("A1").Select
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
Range("H2").Select
ActiveCell.Offset(0, -2).Columns("A:C").EntireColumn.Select
With Selection
.HorizontalAlignment = xlGeneral
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub


Da ich ja mehrere Makros einsetzte, habe ich mir eine Symbolliste gebastelt.
Weißt du vielleicht, wie ich es anstellen muss, das auch andere User mit dieser Symbolliste und den Makros arbeiten können?
Die Datei liegt auf einem Server und soll von mehreren Leuten bearbeitet werden können, allerdings nicht gleichzeitig (also keine Dateifreigabe).
Danke
Gruss..Micha

Anzeige
AW: viele Selects...
12.11.2008 18:53:00
Erich
Hi Micha,
in dem Code stören (mich) sehr diverse Selects. Und zum Teil ist erst auf den dritten Blick zu erkennen,
was da eigentlich ausgewählt wird. Ich hab deshalb den Code etwas bearbeitet.
Die auskommentierten Zeilen kannst du löschen.

Sub IndexformelErstellen()
'   Range("H2").Select ' überflüssig
Cells(2, 8).FormulaArray = _
"=INDEX(CSV!R2C7:R462C7,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Cells(2, 9).FormulaArray = _
"=INDEX(CSV!R26C6:R462C6,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
ActiveCell.Offset(0, 1).Range("A1").Select
Cells(2, 10).FormulaArray = _
"=INDEX(CSV!R2C5:R462C5,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
'   ActiveCell.Offset(0, -2).Range("A1").Select ' überflüssig
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
'   Range("H2").Select ' überflüssig
'   ActiveCell.Offset(0, -2).Columns("A:C").EntireColumn.Select ' überflüssig, selektiert F:H
'   With Selection
With Columns("F:H")
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'   ActiveCell.Offset(1, 0).Range("A1").Select  selektiert F2
Range("F2").Select  ' wenn das nötig/gewünscht ist
End Sub

Deine Symbolleiste kannst du mit der Mappe speichern und damit den Kollegen zur Verfügung stellen.
Dazu klickst du im Anpassen-Dialog (z. B. nach Extras - Anpassen) auf den Button "Anfügen",
da kannst du die Symbolleiste in die Mappe kopieren.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: viele Selects...
13.11.2008 14:53:17
Micha
Hi Erich,
jupp, geht einwandfrei. Da ich mich leider nicht gut in VBA auskenne, wollte ich mal nachfragen, warum man nach der letzten Index Formelerstellung das "ActiveCell" weg lassen kann? Oder warum es heißt "With Columns("F:H")"? Werden damit vl alle Zellen von A:J Mittig gesetzt?
Danke für eine Info.
Gruss..Micha
AW: viele Selects...
13.11.2008 18:34:47
Erich
Hi Micha,
durch deine Frage habe ich gemerkt, dass ich noch mindestens zwei überflüssige Selects übersehen habe.
Die beiden Zeilen mit "ActiveCell.Offset(0, 1).Range("A1").Select"
kannst du auch weglassen - sie sind einfach unnütz.
VBA kann etwas mit Zellen tun (z. B. Formeln reinschreiben, kopieren), ohne das diese Zellen selektiert sind.
Das Select lässt nur den Cursor in der Tabelle wandern, sonst hat es hier keinen Effekt.
Durch "With Columns("F:H")" wird festgelegt, dass bis zum "End With" alle Terme, die mit einem Punkt beginnen,
sich auf die Spalten F bis H beziehen sollen.
(In deinem Makro wurden durch

'    Range("H2").Select ' überflüssig
'   ActiveCell.Offset(0, -2).Columns("A:C").EntireColumn.Select

die Spalten F:H selektiert,
deshalb habe ich Columns("F:H") geschrieben.
Wenn du etwas mit den Spalten A:J tun möchtest, dann musst du eben
With Columns("A:J") schreiben. Das ist jedenfalls klarer als die Zeile mit Offset und EntireColumn.
Darunter hatte ich dann eine Zeile zuviel gelöscht: .HorizontalAlignment = xlCenter
Da sich wieder einige Änderungen ergeben haben, noch mal komplett.
(Da steht nur noch ein - vielleicht auch unnötiges - Select ganz unten.)


Option Explicit      ' Immer zu empfehlen
Sub IndexformelErstellen()
Dim lngRow As Long
' Matrixformeln in 3 Zellen
Cells(2, 8).FormulaArray = _
"=INDEX(CSV!R2C7:R462C7,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
Cells(2, 9).FormulaArray = _
"=INDEX(CSV!R2C6:R462C6,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
Cells(2, 10).FormulaArray = _
"=INDEX(CSV!R2C5:R462C5,MATCH(RC1,CSV!R2C2:R462C2&""_""&CSV!R2C3:R462C3,0))"
' Matrixformeln nach unten kopieren
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
' Formeln durch Werte ersetzen
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
With Columns("A:J")                          ' Formatierungen
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("F2").Select                           ' wenn das nötig/gewünscht ist
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: viele Selects...
14.11.2008 12:59:46
Micha
Hiho Erich,
damit andere Kollegen wissen, von wann der letzte Aktuallisierungsstand ist, habe ich am Ende des Makros noch folgendes hinzugefügt:
Range("B1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Port Description"
If Selection.Count > 1 Then Exit Sub
ActiveCell = ActiveCell & Chr(10) & " Stand " & Now()
Range("A1").Select
End Sub
Nur was mir noch nicht so ganz klar ist, bei der Indexerstellung steht zb. ~"CSV!R2C7:R462C7"~. Woher weiß Excel aber, das es sich auch um mehr als diese jetzt hier angegebenen 462 Zeilen handelt könnte? Weil manchmal ja diese CSV Datei 2-3000 Zeilen enthalten kann?
Gruss..Micha
AW: viele Selects...
14.11.2008 16:58:23
Erich
Hi Micha,
noch einmal: Die meisten Selects sind einfach überflüssig.
Statt

Range("B1").Select            ' überflüssig
Selection.ClearContents       ' überflüssig, Zelle wird gleich beschrieben
ActiveCell.FormulaR1C1 = "Port Description" ' besser Value statt FormulaR1C1

hätte gereicht:


Range("B1").Value = "Port Description"

Das mit der 462 in der Formel ist natürlich unschön - Excel weiß dann nur von den Zeilen 2:462.
Aber das lässt sich variabel gestalten:
Bisher wurde die Variable lngRow schon genutzt für die Zeilennummer, bis zu der die Formeln kopiert werden.
Das geht analog auch für CSV. Statt 462 steht dann überall der Wert von lngRow in der Formel.
Da der rechte Teil der Formel in den drei Spalten identisch ist, wird er vorab in eine Textvariable strT geschrieben,
die dann jeweils an den linken Teil der Formel angehängt wird.
Probier mal


Option Explicit      ' Immer zu empfehlen
Sub IndexformelErstellen()
Dim lngRow As Long, strT As String
lngRow = Sheets("CSV").Cells(Rows.Count, 2).End(xlUp).Row ' Anz. Zeilen CSV
strT = ",MATCH(RC1," & _
"CSV!R2C2:R" & lngRow & "C2&""_""&CSV!R2C3:R" & lngRow & "C3,0))"
' Matrixformeln in 3 Zellen
Cells(2, 8).FormulaArray = "=INDEX(CSV!R2C7:R" & lngRow & "C7" & strT
Cells(2, 9).FormulaArray = "=INDEX(CSV!R2C6:R" & lngRow & "C6" & strT
Cells(2, 10).FormulaArray = "=INDEX(CSV!R2C5:R" & lngRow & "C5" & strT
lngRow = Cells(Rows.Count, 1).End(xlUp).Row  ' Anz. Zeilen
' Matrixformeln nach unten kopieren
If lngRow > 2 Then Range(Cells(2, 8), Cells(2, 10)).Copy _
Range(Cells(3, 8), Cells(lngRow, 10))
' Formeln durch Werte ersetzen
Range(Cells(2, 8), Cells(lngRow, 10)).Value = _
Range(Cells(2, 8), Cells(lngRow, 10)).Value
With Columns("A:J")                          ' Formatierungen
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B1").Value = "Port Description" & vbLf & " Stand " & Now()
Range("A1").Select                           ' wenn das nötig/gewünscht ist
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: viele Selects...
17.11.2008 15:01:25
Micha
Hallo Erich,
super, funktioniert nun alles wie es soll. Nur mit der Symbolleiste verzweifle ich noch.
Wieso sehen meine Kollegen, die auf die selbe Datei zugreifen, nicht die Änderungen, die ich an der Symbolleiste vorgenommen habe? Nach jeder Änderung kopiere ich die neuste Symbolleiste über Anpassen --> Anfügen in die Arbeitsmappe (diese liegt auf einem Serverlaufwerk) und wenn meine Kollegen die Datei öffnen, sehen die keine Änderungen. Hab auch schonmal meine Excel11.xlb Datei verschickt, auch ohne Erfolg.
Ich verstehs einfach net......
Gruss..Micha

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige