|
上手く行かなかったらゴメン
疑問に思うのは、
>same,different列には何も記載しない(スペース)と追加したいのです。
スペースを入れる事と、何もし無い事とは違うんですけど?
Option Explicit
Public Sub Sample()
Dim i As Long
Dim lngRows As Long
Dim rngList As Range
Dim vntData As Variant
Dim vntResult As Variant
Dim vntStep As Variant
Dim strProm As String
vntStep = Application.InputBox("比較する試行前入力", , , , , , , 1)
If VarType(vntStep) = vbBoolean Then
strProm = "マクロがキャンセルされました"
GoTo Wayout
End If
'Listの左上隅を基準とする(列見出しがある物とします)
Set rngList = ActiveSheet.Cells(1, "A")
With rngList
'データ行数を取得
lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row
If lngRows <= 1 Then
strProm = "データが有りません"
GoTo Wayout
End If
'項目1、項目2を配列に取得
vntData = .Offset(1, 1).Resize(lngRows, 2).Value
End With
'結果用配列を確保
ReDim vntResult(1 To lngRows, 1 To 2)
For i = 1 To lngRows - vntStep
'項目2がスペースの試行で無ければ
If Trim(vntData(i, 2)) <> "" Then
'n試行前がA,Bでなくスペースで無ければ
If Trim(vntData(i + vntStep, 2)) <> "" Then
'項目2において,n試行前と比較し,同じであれば
If vntData(i, 2) = vntData(i + vntStep, 2) Then
vntResult(i, 1) = vntData(i, 1)
Else
vntResult(i, 2) = vntData(i, 1)
End If
' Else
' 'スペースを入れる
' vntResult(i, 2) = " "
End If
' Else
' 'スペースを入れる
' vntResult(i, 1) = " "
End If
Next i
Application.ScreenUpdating = False
'結果を出力
rngList.Offset(1, 3).Resize(lngRows, 2).Value = vntResult
Application.ScreenUpdating = True
strProm = "処理が完了しました"
Wayout:
Set rngList = Nothing
Beep
MsgBox strProm
End Sub
|
|