Thema Datum  Von Nutzer Rating
Antwort
27.08.2019 11:24:22 soenke
NotSolved
27.08.2019 11:54:33 Gast45838
NotSolved
27.08.2019 12:05:30 soenke
NotSolved
27.08.2019 12:20:19 Gast1151
*****
NotSolved
27.08.2019 12:38:51 Gast28153
NotSolved
Blau kleines Script, hohe CPU Auslastung
27.08.2019 13:21:59 Moritz
NotSolved
27.08.2019 13:51:48 soenke
NotSolved
27.08.2019 14:07:52 Gast83227
*****
Solved
27.08.2019 16:43:29 Gast61458
*****
Solved

Ansicht des Beitrags:
Von:
Moritz
Datum:
27.08.2019 13:21:59
Views:
556
Rating: Antwort:
  Ja
Thema:
kleines Script, hohe CPU Auslastung

Hallo,

 

ich hoffe es ist okay, wenn ich mich mit meinem ähnlichen Problem an dieses Thema dranhänge.

 

Ich habe folgendes Programm (s.u.) geschrieben, das für ein Arbeitsblatt mit gut 16.000 Zeilen gedacht ist. Zum Testen habe ich es aber erstmal nur über 10, dann 1000 Zeilen usw. laufen lassen.

 

Ab 5000 Zeilen dauert es dann mehrere Minuten, bei einer Prozessorauslastung von ebenfalls 25 % und dem Programmstatus „Keine Rückmeldung“. Über 10000 Zeilen geht dann gar nichts mehr bzw. meine Geduld reicht nicht länger als 20 Minuten.

 

Meine Frage ist: Liegt das an meinen mangelnden VBA-Kenntnissen und ungeschickter Programmsteuerung oder sind das Dimensionen bei denen Excel einfach in die Knie geht?

 

Beste Grüße

 

-Moritz-

 

Option Explicit

Sub aehnliche_artikel()

Dim sku_array(1 To 50) As String, pos As Integer, sku_list As String

Dim aa_a As String, aa_b As String, equal As Boolean

Dim i As Integer, k As Integer, m As Integer, row_count As Integer

Dim i_col As Integer, sku_col As Integer, aa_col As Integer


' Spalten-Nummern von SKU und AA abspeichern

  With ThisWorkbook.Worksheets("Tabelle1")
        For i_col = 1 To 256
            Select Case .Cells(1, i_col).Value
                Case "stock_model"
                sku_col = i_col
                Case "free_aehnliche_artikel"
                aa_col = i_col

                    Exit For
                End Select
        Next i_col
    End With
                

row_count = 12000
Erase sku_array
sku_list = ""
pos = 1


  With ThisWorkbook.Worksheets("Tabelle1")
    .Columns(aa_col + 1).Insert
    .Columns(aa_col + 1).Select
    Selection.NumberFormat = "@"
    .Cells(1, aa_col + 1).Value = row_count
    
    
        For i = 2 To row_count
            aa_a = .Cells(i, aa_col).Value


                 For k = 2 To row_count
                    aa_b = .Cells(k, aa_col).Value
                    If i <> k And aa_a = aa_b And aa_a <> "" Then equal = True Else equal = False
                    If equal = True Then
                        sku_array(pos) = .Cells(k, sku_col).Value
                        pos = pos + 1
                    End If
                Next k

                    sku_list = sku_array(1)
                    For m = 2 To pos - 1
                        sku_list = sku_list & ";" & sku_array(m)
                    Next m
                    sku_list = sku_list & sku_array(pos)
            
            
            .Cells(i, aa_col + 1).Value = sku_list
            Erase sku_array
            sku_list = ""
            pos = 1
        Next i
        
    End With
          
End Sub

 


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
27.08.2019 11:24:22 soenke
NotSolved
27.08.2019 11:54:33 Gast45838
NotSolved
27.08.2019 12:05:30 soenke
NotSolved
27.08.2019 12:20:19 Gast1151
*****
NotSolved
27.08.2019 12:38:51 Gast28153
NotSolved
Blau kleines Script, hohe CPU Auslastung
27.08.2019 13:21:59 Moritz
NotSolved
27.08.2019 13:51:48 soenke
NotSolved
27.08.2019 14:07:52 Gast83227
*****
Solved
27.08.2019 16:43:29 Gast61458
*****
Solved