Results 1 to 20 of 72

Thread: Excel Slow performance

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #11
    VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,709
    Location
    Quote Originally Posted by snb View Post
    100% Arrays:

    Sub M_snb()
       sn = Sheets("Data").Cells(1).CurrentRegion
       sp = Sheets("Mapping").UsedRange
       
       For j = 2 To UBound(sn)
           For jj = 2 To UBound(sp)
              If sn(j, 3) = sp(jj, 1) Then
                 sn(j, 17) = sp(jj, 2)
                 sn(j, 18) = sp(jj, 4)
                 sn(j, 19) = sp(jj, 5)
                 Exit For
              End If
          Next
       
           For jj = 2 To UBound(sp)
              If sn(j, 3) = sp(jj, 16) Then
                 sn(j, 20) = sp(jj, 20)
                 sn(j, 21) = sp(jj, 21)
                 Exit For
              End If
          Next
          
          w_00 = sn(j, 2) - Weekday(sn(j, 2))
          For jj = 22 To 28
            If jj < 27 Then sn(j, jj - 10) = Format(Choose(jj - 21, sn(j, 2), sn(j, 2), sn(j, 2), _
              w_00 + 1, w_00 + 7), Choose(jj - 21, "dddd", "'mmm-yy", "\Wk ww", _
              "\WB dd-mm-yyyy", "\WE dd-mm-yyyy"))
    
            sn(j, jj) = Choose(jj - 21, sn(j, 4) * sn(j, 5), sn(j, 4) * sn(j, 6), sn(j, 4) _
             * sn(j, 7), sn(j, 4) * sn(j, 8), sn(j, 9) / 600, sn(j, 10) / 60, sn(j, 11) / 60)
          Next
       Next
       
       Sheets("Data").Cells(1).CurrentRegion.Offset(19) = sn
    End Sub
    Sheet "mapping" columns I:N are redundant.
    You don't even need screenupdating =false.
    Does this do the same thing
        sn = Sheets("Data").Cells(1).CurrentRegion 
        sp = Sheets("Mapping").UsedRange 
         
        For j = 2 To UBound(sn) 
            For jj = 2 To UBound(sp) 
                If sn(j, 3) = sp(jj, 1) Then 
                    sn(j, 17) = sp(jj, 2) 
                    sn(j, 18) = sp(jj, 4) 
                    sn(j, 19) = sp(jj, 5) 
    If jj > 21 And jj < 29 Then GoTo jj2228
                    Exit For 
                 ElseIf sn(j, 3) = sp(jj, 16) Then 
                    sn(j, 20) = sp(jj, 20) 
                    sn(j, 21) = sp(jj, 21) 
    If jj > 21 And jj < 29 Then GoTo jj2228
                    Exit For 
                End If 
    
    jj2228:        
    If  jj > 21 And jj < 29 Then
            w_00 = sn(j, 2) - Weekday(sn(j, 2)) 
    
                 If jj < 27 Then 
    sn(j, jj - 10) = Format(Choose(jj - 21, sn(j, 2), sn(j, 2), sn(j, 2), w_00 + 1, w_00 + 7), _
    Choose(jj - 21, "dddd", "'mmm-yy", "\Wk ww", "\WB dd-mm-yyyy", "\WE dd-mm-yyyy")) 
    End If
                
    sn(j, jj) = Choose(jj - 21, sn(j, 4) * sn(j, 5), sn(j, 4) * sn(j, 6), sn(j, 4) * sn(j, 7), sn(j, 4) _
    * sn(j, 8), sn(j, 9) / 600, sn(j, 10) / 60, sn(j, 11) / 60) 
    End If
            Next 
        Next 
         
        Sheets("Data").Cells(1).CurrentRegion.Offset(19) = sn 
    End Sub
    Last edited by SamT; 09-11-2017 at 06:11 AM.
    Please take the time to read the Forum FAQ

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •