답변으로 선택하지 마십시오.
이 게시물은 실제로 사용하는 것보다 훨씬 빠른 방법을 보여주기위한 것입니다. 기술적으로 당신은 B2:AI40
에있는 모든 세포를 반복하고 있습니다. 즉, 코드가
여기에만 17 루프
를 사용하여 훨씬 더 빠른 방법입니다 1326 번 (
=34 Cols * 39 Rows
를) 루핑
논리 : 즉 6에서
- < 10과> 5 (, 7,8,9가 1로 대체 됨)
- < 5 그리고> -5 (다른 말로하면 -4, -3, -2, -1,0,1,2,3,4가 0으로 대체 됨))
- < -5 그리고 > -10 (즉 -6, -7, -8, -9 -1로 대체 함) 대신에 어느 셀 루핑, 우리가 기술적 상기 번호를 검색
.Replace
를 사용한다 지금
을 은 1326과 비교하여 17 회만 반복됩니다!
이 완벽하게 작동,
Option Explicit
Sub replace()
Dim ws As Worksheet
Dim rng As Range
Dim i As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("B2:AI40")
With rng
For i = 6 To 9 '<~~ 4 loops
.replace What:=i, Replacement:="1", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
For i = -4 To 4 '<~~ 9 loops ; 7 if when i = 1 or 0 it doesn't do anyting
If i <> 1 And i <> 0 Then
.replace What:=i, Replacement:="0", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
Next i
For i = -9 To -6 '<~~ 4 loops
.replace What:=i, Replacement:="-1", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
End With
End Sub
감사합니다이 샘플 코드를 참조하십시오! 그것은 모두 숫자 값 이었으므로 첫 번째 솔루션과 함께 작업했습니다! – rf2012
@DanielHagemeier : rng> 5, rng> 10, ...을 다루는 더 간단한 솔루션에 대한 편집 내역을 참조하십시오. –
@DocBrown :이 범위는 작지만 코드 앞에 'Application.ScreenUpdating = False'가 있고 코드 앞에'Application .ScreenUpdating = True' 루프가 깜박임을 피할 것입니다. – shahkalpesh