none
비주얼베이직에서 Excel Object Library 15.0이 너무 느려요. RRS feed

  • 질문

  •             For i = 11 To 81 Step 5
                    작업자일계 = WorkB.Worksheets("작업자일계")
                    작업자셀 = 작업자일계.Cells(i, 1)
                    If 작업자셀.Value = Nothing Then
                        Continue For
                    End If
                    For j = 5 To 65 Step 2
                        PBar.Value = PBar.Value + 1
                        PBarV.Text = CStr(PBar.Value & "/492")

                        작업일셀 = 작업자일계.Cells(2, j)
                        모델명입력 = WorkB.Worksheets("모델명 입력")
                        For k = 2 To 13
                            모델셀 = 모델명입력.Cells(k, 1)
                            모델워크시트 = WorkB.Worksheets(모델셀.Value.ToString)
                            For l = 11 To 181 Step 10
                                For m = 5 To 66
                                    모델시트작업자셀 = 모델워크시트.Cells(l, m)
                                    If 모델시트작업자셀.Value = Nothing Then

                                        Exit For
                                    End If
                                    모델시트작업일셀 = 모델워크시트.Cells(l + 1, m)
                                    If 모델시트작업일셀.Value = Nothing Then
                                        Continue For
                                    End If
                                    날짜배열 = Split(모델시트작업일셀.Value.ToString(), "/")
                                    일 = 날짜배열(1)
                                    If Not 일.Equals(작업일셀.Value.ToString) Then
                                        Continue For
                                    End If
                                    If 모델시트작업자셀.Value.ToString.Equals(작업자셀.Value.ToString) Then
                                        플래그 = True
                                        작업조셀 = 모델워크시트.Cells(l + 2, m)
                                        If 작업조셀.Value.ToString.Equals("주간") Then
                                            작업자일계.Cells(i - 2, j) = 작업자일계.Cells(i - 2, j).Value + 모델워크시트.Cells(l + 3, m).Value
                                            작업자일계.Cells(i - 1, j) = 작업자일계.Cells(i - 1, j).Value + 모델워크시트.Cells(l + 4, m).Value
                                            작업자일계.Cells(i, j) = 작업자일계.Cells(i, j).Value + 모델워크시트.Cells(l + 6, m).Value
                                            작업자일계.Cells(i + 1, j) = 작업자일계.Cells(i + 1, j).Value + 모델워크시트.Cells(l + 7, m).Value
                                            작업자일계.Cells(i + 2, j) = 작업자일계.Cells(i, j).Value / 작업자일계.Cells(i - 1, j).Value
                                        Else
                                            작업자일계.Cells(i - 2, j + 1) = 작업자일계.Cells(i - 2, j + 1).Value + 모델워크시트.Cells(l + 3, m).Value
                                            작업자일계.Cells(i - 1, j + 1) = 작업자일계.Cells(i - 1, j + 1).Value + 모델워크시트.Cells(l + 4, m).Value
                                            작업자일계.Cells(i, j + 1) = 작업자일계.Cells(i, j + 1).Value + 모델워크시트.Cells(l + 6, m).Value
                                            작업자일계.Cells(i + 1, j + 1) = 작업자일계.Cells(i + 1, j + 1).Value + 모델워크시트.Cells(l + 7, m).Value
                                            작업자일계.Cells(i + 2, j + 1) = 작업자일계.Cells(i, j + 1).Value / 작업자일계.Cells(i - 1, j + 1).Value
                                        End If
                                    End If
                                Next
                            Next
                        Next
                    Next
                Next

    비주얼스튜디오 커뮤니티 2013으로 작업했습니다. 비주얼베이직으로 작성했습니다.

    원본소스입니다. For문 다 합쳐서 평균적으로 10만회 돌고 최악의 경우 360만회 정도 돕니다.

    실행하면 6분걸립니다. 원래 느린가요?


    • 편집됨 maketext 2015년 6월 30일 화요일 오전 4:10
    2015년 6월 30일 화요일 오전 3:52

모든 응답

  • 요즘에는 하드웨어가 좋아져서 하드웨어는 많이 타지는 않습니다만, 현재 사용자 환경을 알 수 없는 관계로 여러 PC에서 Test해보시면 좋을 것 같습니다. 또한 무엇보다 For문과 IF문이 상당이 있는것으로 보아서는 소스 최적화도 피요할 수도 있을 것 같습니다.

    해당 부분은 테스트를 통해서 퍼포먼스 개선이 필요한 부분이기 때문에 포럼에서 정확히 무엇때문에 느리다라고 말씀드리기는 어려울 것 같습니다.

    감사합니다.

    2015년 6월 30일 화요일 오전 7:48
    중재자