エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか?
たとえばA1~A100に氏名が入力されている中に鈴木一郎,佐々木次郎,高橋三郎など重複して氏名が入力されているとします。どの氏名が重複入力されているか不明なので,オートフィルターで抽出するのはチョット不便です。
この場合,鈴木一郎,鈴木一郎,佐々木次郎,佐々木次郎,高橋三郎,高橋三郎と言うように上から順番に重複している氏名を抽出して表示する関数はありますか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

NO1ですが、NO2さんに対する質問の回答がないのでかわりに・・・



=IF(COUNTIF(B$1:B$100,$B1)>1,"重複","1")

ではなく

=IF(COUNTIF(B$1:B$100,$B1)>1,"重複","")

にすれば「1」という表示は無くなりますよ!
    • good
    • 3
この回答へのお礼

思っていたとおりの作業ができました。感謝いたします。

お礼日時:2010/06/03 21:46

重複している氏名を上から順序よく並べるのでしたら作業列を作って対応するのが判りやすいでしょう。


例えばB1セルに次の式を入力します。

=IF(AND(COUNTIF(A$1:A1,A1)=1,COUNTIF(A:A,A1)>1),ROW(),"")

答えの列はC列としてC1セルには次の式を入力します。

=IF(COUNT(B$1:B$100)<ROW(A1),"",INDEX(A$1:A$100,MATCH(SMALL(B$1:B$100,ROW(A1)),B$1:B$100,0)))

最後にB1セルとC1セルを選択してそれらの式を下方にオートフィルドラッグします。
    • good
    • 0

A列の前に列を挿入して


A1に=IF(COUNTIF(B$1:B$100,$B1)>1,"重複","1")
下方向にコピー。
A列の名前がB列に変わるのでこんな式になります。

で重複してる名前の前に「重複」と出るので
オートフィルタで重複を選択すればオーケー。

こんな感じでどうでしょう?

この回答への補足

回答ありがとうございます。早速試してみたのですが,A列に「1」と出てしまうのですが,やり方がまずいですか?A列に名前がはじめ入っていたのに,列を挿入したので,名前はB列に移りますよね?

補足日時:2010/04/14 19:14
    • good
    • 2

残念ながら、そういった関数はありません。



EXCELのバージョンはいくつですか?
EXCEL2007の新機能では「条件付き書式」の中に「重複する値」というのがあり、重複するデータを任意の書式に変換して強調表示できます。

この回答への補足

回答ありがとうございます。バージョンは2003です。

補足日時:2010/04/14 19:00
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの7桁の中から3,5,7桁目だけ抽出したい

エクセルの7桁の中から3,5,7桁目だけ抽出したい

お世話になります。

表題のとおりなのですが・・・
文字列にしてmidで抽出する方法だと飛び飛びには選んでくれないのでどうしたらいよいでしょうか??

結構作業が多そうなので式があればと探しております。
どうぞよろしくお願いします。。

Aベストアンサー

例えば次のような式で

=MID(A1,3,1)&MID(A1,5,1)&MID(A1,7,1)

Q=SUM(ROUND(A1,0),ROUND(A3,0),ROUND(A10,0))をもっと簡単に

エクセル200です。
A1、A3、A10の各セルにある数値を四捨五入してから合計するのに
=SUM(ROUND(A1,0),ROUND(A3,0),ROUND(A10,0))
でできるのはもちろん存じておりますが、もっと簡単に書く方法はないでしょうか?

A2、A4からA9までのセルが空白であれば
=SUMPRODUCT(ROUND(A1:A10,0)*1)
A2、A4からA9までのセルが文字列であれば
{=SUM(IF(ISNUMBER(A1:A10),ROUND(A1:A10,0),""))}(配列数式)
でできるのですが、数値であるために使えません。

上記のA1、A3、A10はあくまで一例で、実際は同一列ではありますがもっとセル数が多いのです。そのため簡単に書ける方法を探しています。
よい方法があればご教示くださいませ。

Aベストアンサー

雨の鹿児島から、おはようさんです。

これが簡単かどうかは別として、、、

=SUMPRODUCT((ROW(A1:A10)={1,3,10})*ROUND(A1:A10,0))
 
以上です。
 

Qリストのデータを重複なしでランダムに抽出する

シート1に下記のように14種類の名前リストがあります

    A
1   A
2   B
3   C
4   D
5   E
6   F
7   G
8   H
9   I
10  J 
11  K
12  L
13  M
14  N

上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です)
ちなみに下記は一列おきのセルに抽出した例です

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA
1 D   L   K    I    A   M   N    B   H   J    C    F    E   G
2 K   J   M   H    I   G   F    E   D    A    B   N   C    L
3 E   J   A    L   B   M    K   C   N    G    F   D    H   I

どなたか教えていただける方がおりましたらよろしくお願いします。

という質問をさせていただき、mike gさんに下記のような回答をいただきました


1.Sheet1 の例えばセル C1 に式 =RAND() を入力して、此れを右に2列(注1参照)ドラッグ&ペースト
2.範囲 C1:E1 を下方にズズーッと(14行目まで)ドラッグ&ペースト
以下は別シート(Sheet2)における操作です。
3.セル A1 に次式を入力して、此れを右方にズズーッと(セル AA1 まで)ドラッグ&ペースト(注2参照)
  =IF(MOD(COLUMN(),2)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW()-1,14,),CEILING(COLUMN()/2,1)),OFFSET(Sheet1!$C$1,,ROW()-1,14,),0)),"")
4.1行目全体を下方にズズーッと(3行目まで)ドラッグ&ペースト

注1:「右に2列」は別シートの行数が3行の場合で、4行(5行)の場合は「右に3列(4列)」に読み替える。
注2:式中の 2 は「一列おき」の場合で、二列(三列)おきの場合は 2 を 3(4) に書き替える。


これで完璧に出来たのですが
実際にはSheet2のセルH6から15列おきに抽出したいのです。
15列おきは出来たのですが、セルH6から抽出を始めるにはどの部分を変更すれば良いのでしょうか?
どなたか教えて頂ける方がおりましたらよろしくお願いします。

シート1に下記のように14種類の名前リストがあります

    A
1   A
2   B
3   C
4   D
5   E
6   F
7   G
8   H
9   I
10  J 
11  K
12  L
13  M
14  N

上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です)
ちなみに下記は一列おきのセルに抽出した例です

  A B C D E F G H I J K L M N O P Q R S T...続きを読む

Aベストアンサー

H6: =IF(MOD(COLUMN(A1),16)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW(A1)-1,14,),CEILING(COLUMN(A1)/16,1)),OFFSET(Sheet1!$C$1,,ROW(A1)-1,14,),0)),"")

Q2つの条件で重複しないデータを抽出

シート1
1|品名 種類 名前 データ
2|A 1 あ 21
3|B 2 い 11
4|F 2 あ 51
5|A 1 い 21 
6|B 2 あ 64
7|A 1 あ 84


シート2
1|品名 A
2|種類 1
3|
4|名前
5|あ
6|い


シート1のデータから、シート2の2つの条件(A1:B2)で、重複しない名前を表示する方法を教えて下さい。
上記のデータでいうと、品名Aであり種類が1の名前を重複なしで特定の位置(A5)から詰めて縦に表示するようにして、
シート1のデータ、シート2の条件を変更したらA5からの名前が自動更新されるようにしたいです。

以下できたら追加したいこと
1.表示する名前の順番が、シート2の条件で集計したデータ値が多い名前順
2.シート2のB2の種類に0を入れると種類の条件無しで表示


実際はA5からの名前の行は数行を結合したもので右側には複数の行でデータ項目別になって、名前が入力された時に日毎のデータを自動表示しています。
全部で名前の種類は30以上ありますが、品名の条件をつければ名前は10種類以下になります。
グラフは名前別で表示しており、不要な名前が増えると表示しずらいので、必要な名前だけのデータを表示するようにしたいです。

どうかよろしくお願いします。

シート1
1|品名 種類 名前 データ
2|A 1 あ 21
3|B 2 い 11
4|F 2 あ 51
5|A 1 い 21 
6|B 2 あ 64
7|A 1 あ 84


シート2
1|品名 A
2|種類 1
3|
4|名前
5|あ
6|い


シート1のデータから、シート2の2つの条件(A1:B2)で、重複しない名前を表示する方法を教えて下さい。
上記のデータでいうと、品名Aであり種類が1の名前を重複なしで特定の位置(A5)から詰めて縦に表示するようにして、
シート1のデータ、シート2の条件を変更したらA5からの...続きを読む

Aベストアンサー

No.1です!
補足を読ませていただきました。
データは10000行位あり、今後も増える予定だというコトですので、
VBAでの方法はどうでしょうか?

※ 実は前回、
>1.表示する名前の順番が、シート2の条件で集計したデータ値が多い名前順
>2.シート2のB2の種類に0を入れると種類の条件無しで表示
の件を無視していましたので、

Sheet1・Sheet2の配置はお示し通りになっていて、Sheet3を作業用に使用しています。
(Sheet3は現在なにも使用していないという前提です。)

画面左下にあるSheet2のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてSheet2のB1・B2セルのデータを変更してみてください。


Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim i, j As Long
Dim ws1, ws3 As Worksheet
Set ws1 = Worksheets(1)
Set ws3 = Worksheets(3)
Application.ScreenUpdating = False
If Target.Row <= 2 And Target.Column = 2 Then
If WorksheetFunction.CountBlank(Range("B1:B2")) Then Exit Sub
i = Cells(Rows.Count, 1).End(xlUp).Row
If i > 4 Then
Range(Cells(5, 1), Cells(i, 1)).ClearContents
End If
ws1.Columns("A:D").Copy Destination:=ws3.Cells(1, 1)
ws3.Columns("A:D").Sort key1:=ws3.Cells(1, 4), order1:=xlDescending
ws3.Columns(1).Insert
If Cells(2, 2) = 0 Then
For i = 2 To ws3.Cells(Rows.Count, 2).End(xlUp).Row
If ws3.Cells(i, 2) = Cells(1, 2) And _
WorksheetFunction.CountIf(ws3.Columns(1), ws3.Cells(i, 4)) = 0 Then
ws3.Cells(i, 1) = ws3.Cells(i, 4)
End If
Next i
For j = 2 To ws3.Cells(Rows.Count, 1).End(xlUp).Row
If ws3.Cells(j, 1) <> "" Then
Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws3.Cells(j, 1)
End If
Next j
Else
For i = 2 To ws3.Cells(Rows.Count, 3).End(xlUp).Row
If ws3.Cells(i, 2) = Cells(1, 2) And ws3.Cells(i, 3) = Cells(2, 2) And _
WorksheetFunction.CountIf(ws3.Columns(1), ws3.Cells(i, 4)) = 0 Then
ws3.Cells(i, 1) = ws3.Cells(i, 4)
End If
Next i
For j = 2 To ws3.Cells(Rows.Count, 1).End(xlUp).Row
If ws3.Cells(j, 1) <> "" Then
Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws3.Cells(j, 1)
End If
Next j
End If
ws3.Cells.ClearContents
Application.ScreenUpdating = True
End If
End Sub 'この行まで

※ B2セルが「0」の場合は「種類」は無視して、「品名」ごとの最大データの人を表示!
※ B2セルが「0」以外の場合は「品名」・「種類」が一致する最大データの人を表示!
という考え方にしています。

お役に立てば良いのですが・・・m(_ _)m

No.1です!
補足を読ませていただきました。
データは10000行位あり、今後も増える予定だというコトですので、
VBAでの方法はどうでしょうか?

※ 実は前回、
>1.表示する名前の順番が、シート2の条件で集計したデータ値が多い名前順
>2.シート2のB2の種類に0を入れると種類の条件無しで表示
の件を無視していましたので、

Sheet1・Sheet2の配置はお示し通りになっていて、Sheet3を作業用に使用しています。
(Sheet3は現在なにも使用していないという前提です。)

画面左下にあるSheet2のSheet見出し上で...続きを読む

Qエクセルで連続した重複セルを抽出する方法

お世話になります、ネット上で検索しましたが、
求めている答えを見つけることができなかったので、コチラで質問させていただきます。

エクセル表の制作についこのようなことが可能かどうかわからないのですが、
ご存知の方がいらっしゃいましたらご教授お願いいたします。



以下のようなエクセル表があるとします。

田中  佐藤  鈴木  木山 
佐藤  平原  鈴木  木山
鈴木  平原  田中  木山 
木山  平原  田中  佐藤
       ・
       ・
       ・

列こそ違いますが、行で言うと「木山」は4回連続で出現しています。
この場合、4回連続で入力された「木山」を抽出して背景の色を変えるとか
即座にそれを認識できる方法はありませんか?

要するに、4行連続で入力することをエラーとしたいのです。

当方、エクセルに関してそれほど知識等ありませんので、できるだけわかりやすく
ご教授いただけたらありがたいです。よろしくお願いいたします。

Aベストアンサー

こんばんは!
入力規則でエラー表示も可能だと思いますが・・・

セル色の方をご希望のようなので、条件付書式での一例です。
↓の画像のように1行目からデータがあるとします。
当方使用のExcel2003の場合ですが、

4行目以降を範囲指定 → 書式 → 条件付書式 → 「数式が」を選択 → 数式欄に
=COUTIF($A1:$D4,A4)>=4
と入力 → 書式 → パターンから好みの色(画像では赤)を選択しOK
これでA~D列内に4行連続出現データに色がつくと思います。

Excel2007の場合は(手元にないのではっきり覚えていませんが)
条件付書式 → 新しいルール → 「数式を使用して・・・」といった感じだったと思います。
数式欄には同じ数式を入れます。

こんなんで参考になりますかね?m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報