Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
456to460
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
456to460
456to460
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten einlesen

Daten einlesen
20.07.2004 12:31:06
struppi
hi,
ich möchte eine Aufgabe per VBA lösen und vielleicht könnt Ihr mir ja helfen.
Meine Datei hat 2 Tabellen. Tabelle1 enthält die Daten, die in Tabelle2 eingelesen und weiter verwendet werden sollen. Die Daten übermehne ich mit folgender Funktion:
=WENN(K$5="x";WENN(ISTFEHLER(SVERWEIS(VERKETTEN(K$7;"-";$A10;"-";K$8);'Tabelle1'!$A$3:$P$30000;15;0));0;SVERWEIS(VERKETTEN(K$7;"-";$A10;"-";K$8);'Tabelle1'!$A$3:$P$30000;15;0));"")
Da die Datenmenge und die berechnungen zum Teil recht umfangreich sind, sind die Wartezeiten entsprechend.
Deshalb meine Frage: geht dies auch per VBA? Die Zeilenzahl in Tabelle 2 ist fest (von 10 - 815)
die Spaltenzahl variiert, Anfangsspalte = K
Die Werte sollen aber nur eingelesen werden, wenn in Zeile 5 der jeweiligen Spalte ein x gesetzt wird. wird das x wieder gelöscht, soll die Werte dieser Spalte gelöscht werden.
Hat jemand von Euch eine Lösung hierzu?

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten einlesen
20.07.2004 14:53:20
Roland
Hallo struppi,
lad mal eine Tabelle mit Spieldaten hoch.
Gruß
Roland
AW: Daten einlesen
struppi
hallo roland,
super, dass sich jemand daran veruschen möchte, meine kenntnisse sind nämlich äußerst bescheiden. viel spass damit
gruß
struppi
https://www.herber.de/bbs/user/8720.zip
AW: Daten einlesen
20.07.2004 18:15:31
Roland
Hallo struppi,
mit Alt-F11 in den Editor, oben links doppelt auf Tabelle4(Tabelle2) klicken und dann nachfolgenden Code eingeben:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
Else
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
20.07.2004 18:15:38
Roland
Hallo struppi,
mit Alt-F11 in den Editor, oben links doppelt auf Tabelle4(Tabelle2) klicken und dann nachfolgenden Code eingeben:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
Else
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
20.07.2004 18:15:48
Roland
Hallo struppi,
mit Alt-F11 in den Editor, oben links doppelt auf Tabelle4(Tabelle2) klicken und dann nachfolgenden Code eingeben:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
Else
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
20.07.2004 18:15:52
Roland
Hallo struppi,
mit Alt-F11 in den Editor, oben links doppelt auf Tabelle4(Tabelle2) klicken und dann nachfolgenden Code eingeben:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
Else
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
20.07.2004 18:15:52
Roland
Hallo struppi,
mit Alt-F11 in den Editor, oben links doppelt auf Tabelle4(Tabelle2) klicken und dann nachfolgenden Code eingeben:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
Else
Cells(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
struppi
hi roland,
erst einmal danke für deine antwort aber leider funktioniert das bei mir nicht. obwohl ich den code so eingefügt habe wie du es beschrieben hast, ist anschließend nichts passiert.
vielleicht habe ich mich auch mißverständlich ausdegrückt. da, wo jetzt der sverweis steht, sollen über ein makro die entsprechenden werte aus der tabelle1 eingelesen werden, ein sverweis soll da nicht mehr stehen. lösche ich das "x", sollen auch die werte wieder verschwinden.
in der beispeildatei sind jetzt nur 3 spalten zu füllen, in der relität werden das aber in der regel deutlich mehr. bei einem sverweis würde das alles dann ewig lange dauern.
gruß
struppi
Anzeige
AW: Daten einlesen
21.07.2004 09:43:24
Roland
Hallo struppi,
ds kann ich nicht nachvollziehen, es funktiniert genau so wie es soll. Ich habe die Datei mal hochgeladen.
https://www.herber.de/bbs/texte/struppi.zip
Gruß
roland
AW: Daten einlesen
struppi
ja geht denn heute alles schief?
das mit dem runterladen klappt leider nicht. ich bekomme die meldung "dokument nicht gefunden"
AW: Daten einlesen
struppi
hi roland,
ich habe deine datei ausprobiert. so wie ich das sehe, werden die werte nach wie vor über meinen sverweis eingelesen und nicht über das makro. lösche doch mal die die zellen ab k10 und setze dann ein "x", bzw. setze in n5 ein "x". dann wird nämlich nichts mehr eingelesen.
gruß
struppi
Anzeige
AW: Daten einlesen
21.07.2004 10:25:58
Roland
Hallo struppi,
natürlich werden die Daten über die Verweisfunktion eingelesen, andere Kriterien habe ich nicht. Wenn du anschließend nur noch die blossen Werte (und nicht mehr die Verweis-Formel) haben willst, dann ändere den Code wie folgt ab:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zelle As Range
If Target.Row <> 5 And Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Range(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
For Each zelle In Selection
zelle.Value = zelle.Value
Next
Else
Range(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
Target.Offset(1, 0).Select
End Sub

Gruß
Roland
Anzeige
AW: Daten einlesen
Roland
Wenn einmal der Wurm drin ist:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zelle As Range
If Target.Row <> 5 Or Target.Column < 11 Then
Exit Sub
Else
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Value = "x" Then
Target.Offset(5, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(R5C=""x"",IF(ISERROR(VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),0,VLOOKUP(CONCATENATE(R7C,""-"",RC1,""-"",R8C),Tabelle1!R3C1:R30000C16,15,0)),"""")"
Range(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.FillDown
For Each zelle In Selection
zelle.Value = zelle.Value
Next
Else
Range(Target.Offset(5, 0), Target.Offset(810, 0)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
Target.Offset(1, 0).Select
End Sub

Gruß Roland
Anzeige
AW: Daten einlesen
struppi
hallo roland,
ich bin begeistert. klappt alles so, wie ich es wollte. hatte nur vorübergehend das problem, dass durch irgendwas die makros bei mir deaktiviert wurden.
danke
gruß
struppi
Bitte bitte :-)) oT
21.07.2004 16:30:20
Roland
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige