一例です。
この要件ならばマクロ(VBA)の方が良いと思います(私用PCでは12秒程度)
(1)対象データシート名上で右クリック→コードの表示(VBE画面表示)→以下のコード
貼り付け→F5キー押下でお試しください。
尚、マクロの削除は、貼り付けコードを削除でOKです。
Sub sample()
Application.ScreenUpdating = False
Set Db = CreateObject("Scripting.Dictionary")
For i = 1 To Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
For j = 1 To 4
If Cells(i, j) <> "" Then
Db(Cells(i, j).Value) = 1
End If
Next
wk = Db.keys
For n = 0 To Db.Count - 1
Cells(i, 6 + n) = wk(n)
Next
Db.RemoveAll
Next
Application.ScreenUpdating = True
End Sub
こんばんは!
VBAになってしまいますが・・・
一例です。
データは1行目からあるとします。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, j As Long
Application.ScreenUpdating = False
For i = 1 To UsedRange.Rows.Count
Range(Cells(i, 1), Cells(i, 4)).Copy Destination:=Cells(i, 6)
For j = 9 To 6 Step -1
If Cells(i, j) = "" Then
Cells(i, j).Delete (xlToLeft)
ElseIf WorksheetFunction.CountIf(Range(Cells(i, 6), Cells(i, j)), Cells(i, j)) > 1 Then
Cells(i, j).Delete (xlToLeft)
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub 'この行まで
※ ご希望の方法でなかったらごめんなさいね。m(__)m
お礼
お礼が遅くなりすみません。 参考になりました。 実際の表は、AB列から始まっていたので、そのままでは使えない為、解読するのに時間が掛かり、一苦労しましたが、私が描いていた通りの結果の上、処理が軽いお陰で、件数が多くても問題ありませんでした。 ありがとうございました。