Excel 2007 VBマクロでは、カンマ区切り文字列を分割して分割し、それを減らして連続する重複値を削除します。したがって、「2,2,2,1,1」は「2,1」になり、「3,3,3,2,3,3,3」は「3,2,3」になります。ExcelのCSVから連続した重複値を削除するVisual Basic
これはうまくいくようですが、「If If 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でなければならず、.equals()メソッドを持っているはずです(http://msdn.microsoft.com/en-us/library/system.string.equals%28v=vs.80)。 %29.aspxもちろん、これはVB.NETではなくVBAなので、すべての違いを生むかもしれません。 – Drizzt321
ああ、それはすべての違いを作る。 VBAはVB6に基づいており、小さな構文類似性の外ではVB.NETとほとんど共通していません。文字列、ブール値、整数、ロングなどのデータ型は、VBAのオブジェクトではなく、メモリ内の実際のデータ値を保持するため、関連するプロパティやメソッドがなく、直接比較して操作できます。変数が実際の値を保持するのではなくメモリアドレスを指すように、文字列がオブジェクトである言語ではString.equals()が必要です。 – Banjoe