Thema Datum  Von Nutzer Rating
Antwort
10.04.2014 22:22:13 Wolle9
NotSolved
10.04.2014 23:43:37 Gast44899
NotSolved
11.04.2014 01:33:11 Gast17939
NotSolved
11.04.2014 02:30:05 Gast22986
NotSolved
Rot bestimmte Zeichen in Spalte einer anderen Datei zählen
11.04.2014 23:26:07 Gast27010
NotSolved

Ansicht des Beitrags:
Von:
Gast27010
Datum:
11.04.2014 23:26:07
Views:
2294
Rating: Antwort:
  Ja
Thema:
bestimmte Zeichen in Spalte einer anderen Datei zählen

< Jetzt funktioniert es! Dauert aber 40 min bis es alles geladen hat.

Guten Morgen :D

hättest ja gleich x 100 Files schreiben  können, egal - eine Kanne Kaffee mehr ;)

Anbei Muster für schlappe 5 sec

Gruß & Tschüss

Option Explicit

Sub Werteholen()
'privat nur Test
'Dim obTimer As New CHighResTimer  'Test - Zeitmessung
'
Dim obj_fso As Object
Set obj_fso = CreateObject("Scripting.FileSystemObject")
'
'
Dim rngPfadDatei As Range, rngFcnt As Range
'
  'Zeile 1 Überschrift A= voller Dateipfad !, B = Zustand, C:Q = Zahlen 1 - 15, R = Datenfeld
  Set rngPfadDatei = ActiveWorkbook.Sheets("Tabelle1").Range("A2:A101")
  ActiveWorkbook.Sheets("Tabelle1").Range("B2:R101").Clear
  '
  'obTimer.StartTimer  'Test - Zeitmessung starten
  For Each rngFcnt In rngPfadDatei
    If obj_fso.fileExists(rngFcnt.Formula) Then
      rngFcnt.Offset(0, 1).Formula = "OK"
      '
      'Nur ein Datenfeld holen !!!  - Datei , Bereichsangabe exakt, Ziel
      'add Ziel - hattu nur Daten im Range, dann False und Ziel + 1 Zeile
      If NurEinDatenfeld(rngFcnt.Formula, "[Tabelle4$B3:B300]", "R3", False) Then
      End If
      '
      MeineAuswertung rngFcnt, "R2" 'Datenfeldbeginn
      '
    Else
      rngFcnt.Offset(0, 1).Formula = "NA"
    End If
  Next rngFcnt
  
  Columns("R:R").Clear  'letztes Datenfeld
  '
  'obTimer.StopTimer 'Test - Zeitmessung beenden, ausgeben
  'Debug.Print "100 Dateien x 15 Vergleiche " & WorksheetFunction.Round(obTimer.Elapsed, 4) & " Sekunden"
  'das waren schlappe 5 Sekunden
Set obj_fso = Nothing
'privat nur Test
Set obTimer = Nothing
End Sub

Private Sub MeineAuswertung(ByVal MeineDatei As Range, _
  strDatenfeld As String)
Dim rngDatenfeld As Range, rngcnt As Range
Dim SucheWert As Double
'
On Error GoTo errorhandler
  Set MeineDatei = MeineDatei.End(xlToRight).Offset(0, 1) 'erste leere
  Set rngDatenfeld = Range(strDatenfeld)
  Set rngDatenfeld = Range(rngDatenfeld, rngDatenfeld.End(xlDown)) 'Datenfeld bestimmen
  '
  Do While MeineDatei.Column < rngDatenfeld.Column
    SucheWert = Cells(1, MeineDatei.Column)
    MeineDatei.Value = WorksheetFunction.CountIf(rngDatenfeld, SucheWert)
    Set MeineDatei = MeineDatei.Offset(0, 1)
  Loop
On Error GoTo 0
Exit Sub
errorhandler:
MsgBox "Fehler in Auswertung " & MeineDatei.Address, vbCritical
On Error GoTo 0
End Sub


Private Function NurEinDatenfeld(ByVal strPfadDatei As String, _
  ByVal strDatenBereich, ByVal strZieladresse, _
  ByVal Kopf As Boolean) As Boolean
Dim oDatenfeld As Object
Dim strVerbindung As String
Dim strSQL As String

'Achtung Microsoft.ACE.OLEDB.12.0 einbinden
strVerbindung = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strPfadDatei & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""

strSQL = "SELECT * FROM " & strDatenBereich

On Error GoTo errorhandler
Set oDatenfeld = CreateObject("ADODB.Recordset")
'
oDatenfeld.Open strSQL, strVerbindung, 0, 1, 1
'
If Not oDatenfeld.EOF Then
  ActiveSheet.Range(strZieladresse).CopyFromRecordset oDatenfeld
  If Not Kopf Then Range(strZieladresse).Offset(-1, 0).Value = _
    oDatenfeld.Fields(0).Name
  NurEinDatenfeld = True  'erfolgreich
Else
MsgBox "keine Daten in " & strPfadDatei, vbCritical
End If
errorhandler:
oDatenfeld.Close
Set oDatenfeld = Nothing
On Error GoTo 0
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
10.04.2014 22:22:13 Wolle9
NotSolved
10.04.2014 23:43:37 Gast44899
NotSolved
11.04.2014 01:33:11 Gast17939
NotSolved
11.04.2014 02:30:05 Gast22986
NotSolved
Rot bestimmte Zeichen in Spalte einer anderen Datei zählen
11.04.2014 23:26:07 Gast27010
NotSolved