プロが教える店舗&オフィスのセキュリティ対策術

エクセル関数でお聞きします。
列の中で重複数値は削除できますが、行の中の重複する数値を削除する方法はありますか。
例えば A2からS2までの行内の重複する数値を削除したいのですが・・・
また 数値が入ったA2からS15の表の中で重複する数値を削除できますか
Office2010です。よろしくお願いします。

質問者からの補足コメント

  • うーん・・・

    お手数おかけします。
    「重複する数値」を1個だけを残して あとは削除したいのですが・・・

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/03/20 14:34

A 回答 (6件)

データ全体をコピーして


新しーシートに縦横入れ替え貼り付けしたら
列で削除処理できるから
も一度、戻しの縦横入れ替えすれば可能では?
    • good
    • 0

削除の意味次第ですが、



①元データを完全に消去したい。と言う意味であれば関数でどうこうできるものではありません。
 VBAについては分かりませんので、他の方の回答を参考にしてください。
②元データから重複データを除いて抽出(表示)したい。という意味であれば、
 COUNTIFによってその列より左に重複データがあるかどうか数え、
 IFにより重複データがあった場合は空白とする。なければそのまま表示する。
 という式を入れれば、重複データのみ表示を消すことができます。

A2~S15というのは、行・列関係なく、19*14個全てのセルの中に重複データがあるかどうかという意味でしょうか?
先ほどの②と同様の意味でいいのならば、
そのセルより上の行に重複データがあるかをカウントし、あった場合は空白。
なかった場合は、その行のそのセルより左にあるかをカウントし、あった場合は空白。
これも無かった場合は、そのまま表示する。
とすることで、1行目左端→右端→2行目左端→右端→…という順番で優先されて重複データを空白とできます。
1列目上端→下端→2列目上端→下端→…としたければ、最初にそのセルより左の列でカウントし、
無かった場合にその列でそのセルより上にあるかをカウントする。という順番にすれば可能です。
同様に右や下のセルを優先して残すようにもできます。
    • good
    • 0

添付図参照


Sheet2!A1: =IF(COUNTIF(Sheet1!$A1:A1,Sheet1!A1)>1,"",COLUMN(A1))
Sheet2!U1: =IFERROR(INDEX(Sheet1!$A1:$S1,SMALL($A1:$S1,COLUMN(A1))),"")
Sheet1!U1: =IFERROR(SMALL(Sheet2!$U1:$AM1,COLUMN(A1)),"")
「表または行内の重複する数値の削除」の回答画像4
    • good
    • 0

こんにちは。



要するに、データ(タブ)のデータツールの重複の削除の横版ということですよね。

横に対しては、うまくいかないようですね。
今のところ、マクロしかないような気もしますが……。汎用性をもたせましたので、できれば、個人用マクロブックで、ショートカットやQATボタンにすると便利かと思います。

'//標準モジュールに入れてください。
Sub UniquedItemLine()
 Dim Rng As Range
 Dim objDic As Object
 Dim c As Variant
 Dim vhflg As Integer
 Dim i As Long, j As Long
 i = 1
 If TypeName(Selection) <> "Range" Then Exit Sub
 Set Rng = Selection
 If Application.CountA(Rng) < 3 Then
  MsgBox "データは、2個よりも多くあるところを選択してください。", vbExclamation
  Exit Sub
 End If
 If Rng.Rows.Count = 1 And Rng.Columns.Count > 2 Then vhflg = 1
 If Rng.Rows.Count > 2 And Rng.Columns.Count = 1 Then vhflg = 2
 If vhflg = 0 Then MsgBox "どちらか1行か1列でないと働きません。", vbExclamation: Exit Sub
 Set objDic = CreateObject("Scripting.Dictionary")
 
 For Each c In Rng
  If c.Value <> "" Then
   If objDic.Exists(c.Value) Then
    j = j + 1
    Else
    objDic.Add c.Value, CStr(i)
   End If
  End If
 Next
 If MsgBox(j & "個重複を省きますが、よろしいですか?", vbOKCancel) = vbCancel Then
  Exit Sub
 End If
 Rng.ClearContents
 For i = 0 To objDic.Count - 1
  Rng.Cells(i + 1).Value = objDic.Keys()(i)
 Next
 If j > 0 Then
  MsgBox Rng.Count & "中で、" & j & "個重複を省きました。", vbInformation
 End If
End Sub
    • good
    • 0

>A2からS2までの行内の重複する数値を削除したいのですが・・・


>また 数値が入ったA2からS15の表の中で重複する数値を削除できますか

3行目から15行目に入っている数値もセル単位で重複しているということですか?(要はセルでバラバラ)
2行目だけを基準に列単位で重複列の削除では駄目ということ?
    • good
    • 0

「重複する数値の削除」の意味?


「重複する数値」と同じ数値は全て削除?
「重複する数値」だけを削除して、1個だけを残す?
そこンとこ、キッチリ!
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!