Excel 2007 VB 매크로에서 쉼표로 구분 된 문자열을 사용하여 분할 한 다음 줄여서 연속 된 값을 중복 제거하려고합니다. 따라서 "2,2,2,1,1"은 "2,1"이되거나 "3,3,3,2,3,3,3"은 "3,2,3"이됩니다.Excel에서 CSV에서 연속 된 중복 값 제거 Visual Basic
작동하는 것처럼 보이지만 "currentVal.equals (prevVal) = False Then"에 도달하면 런타임 오류 424, 'Object required'가 표시됩니다.
저는 VB를 한 이후로 영원했습니다. VP6이었습니다.
Sheets("Sheet1").Select
Range("I1").Select
Dim data() As String
Dim currentVal, prevVal As String
Dim output As String
Dim temp As Boolean
Do Until Selection.Value = ""
data = Split(Selection, ",")
output = ""
prevVal = ""
For Each elem In data
currentVal = CStr(elem)
If currentVal.equals(prevVal) = False Then
output = output + elem + ","
End If
Next elem
Selection.Value = output
Selection.Offset(1, 0).Select
Loop
예, 마지막 지점을 깨닫고 고쳐주었습니다. 또한 IRC chan에서 currentVal = prevVal을 얻었습니다. 감사합니다. 그러나 String은 Object 여야하며 (.) 메서드가 있어야합니다. http://msdn.microsoft.com/en-us/library/system.string.equals%28v=vs.80 % 29.aspx 물론 VB.NET이 아닌 VBA이므로 모든면에서 차이가있을 수 있습니다. – Drizzt321
아, 그래도 모든 차이가 있습니다. VBA는 VB6을 기반으로하며 작은 구문 유사성을 제외하고는 VB.NET과 거의 관련이 없습니다. string, boolean, integer, long 등과 같은 데이터 유형은 VBA의 객체가 아니라 메모리의 실제 데이터 값을 보유하므로 관련 속성이나 메서드가 없으며 직접 비교하고 조작 할 수 있습니다. String.equals()는 실제 값을 유지하는 대신 변수가 메모리 주소를 가리키는 것처럼 문자열이 객체 인 언어에서 필요합니다. – Banjoe