ここから質問投稿すると、最大4000ポイント当たる!!!! >>

お世話になっております。

添付の画像を見て頂きたいのですが、

1.添付した画像のような感じで重複、非重複が分かるようにA-Z順に並べる関数と、
2.その非重複の全リストの一覧にする関数

はどのように関数を書けばいいでしょうか。
お知恵お貸し下さいm(_ _)m

「Excel 重複判断しつつ並べ替えする関」の質問画像

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

A 回答 (7件)

No.4・5です。


補足の件について・・・

>これをリストが5つ(E列まで)、10個(J列まで)などにする場合、
>コードのどこをどう書き換えれば良いのでしょうか。

に関しては、「全項目」が画面から見えなくなるといけないので余計なお世話かもしれませんが、
↓の画像のように「全項目」列をA列とし、「商品リスト」はB列以降にあり
1行目項目が入っている最終列まで対応するようにしてみました。
(1行目項目データがある最終列までです)

次に
>また、今回は1つの商品リストに十数個程度のデータしか入っていませんでした、
>これがそれぞれの商品リストに数千入っていても、
>このまま動作すると思って大丈夫でしょうか。

の件につきまして、おそらく大丈夫のはずですが結構時間がかかるかもしれません。

今一度コードを載せてみますので、マクロを試してみてください。

Sub test2() 'この行から
Dim i, j, k, M As Long
Application.ScreenUpdating = False
M = Cells(1, Columns.Count).End(xlToLeft).Column '最終列の取得
For j = 2 To M 'B列~最終列まで
For k = 2 To Cells(Rows.Count, j).End(xlUp).Row '2行目からj列最終行まで
If WorksheetFunction.CountIf(Columns(1), Cells(k, j)) = 0 Then
Cells(Rows.Count, 1).End(xlUp).Offset(1) = Cells(k, j)
End If
Next k
Next j
For j = 1 To M 'A列~最終列まで
k = Cells(Rows.Count, j).End(xlUp).Row 'J列の最終行取得
Range(Cells(2, j), Cells(k, j)).Sort key1:=Cells(1, j), order1:=xlAscending
Next j
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
For j = 2 To M 'B列から最終列まで
For k = Cells(Rows.Count, j).End(xlUp).Row To 2 Step -1
If Cells(k, j) = Cells(i, 1) Then
Cells(k, j).Cut Destination:=Cells(i, j)
End If
Next k
Next j
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

※ ご希望通りに動きになれば良いのですが・・・m(_ _)m
「Excel 重複判断しつつ並べ替えする関」の回答画像7
    • good
    • 0
この回答へのお礼

すごい・・・ほんと完璧です!

コードを書き換えなくても自動でリスト数を取得するようにまでなっていて大感激です!
なんて御礼を申し上げたら良いのか・・・。
おかげさまで仕事の効率がだいぶ改善されました。ほんと嬉しいです!!
世の中にはこんなことができる方がいらっしゃるのですね。

重ね重ねありがとうございましたm(_ _)m

お礼日時:2012/06/05 23:15

No.2です。


横から失礼します。

No.5さんのコードは、リストが4列で5列目に全アイテムの出力を行うように作られていますので、実際のリストの数がもっと多いのであれば

>For j = 1 To 4
→ For j = 1 to 10

のように、固定値で4と記述している箇所をリストの数

>Cells(Rows.Count, 5)
→ Cells(Rows.Count, 11)

など、固定値で5と記述している箇所をリストの数+1にするだけだと思います。

余談です。
実際のリストが4つではなく、かつ1つのリストに含まれる商品の数が数千あるというなら、そういう情報はできれば質問文に書いておいてほしかったです。
私がNo.2に書いたような方法は、Excel2003では65536行までしかないため、例えばリストが20個でリスト1つ当たり5000の商品があるような場合だと使えないんですよね。
    • good
    • 0
この回答へのお礼

商品数の件は申し訳ございませんでした。
Excelに行の限界があるとは夢にも思っていなくて思い至りませんでした。

固定値に+1するというのは勉強になりました。
このたびはお知恵をお貸し頂きありがとうございましたm(_ _)m

お礼日時:2012/06/05 23:17

No.4です!


たびたびごめんなさい。
前回のコードではA~D列データが昇順に並んでいないとちゃんと表示されません。
今度はA~D列データがどんな並びでも対応できるようにしてみました。

前回のコードは削除して↓のコードに変更してください。

Sub test2() 'この行から
Dim i, j, k As Long
Application.ScreenUpdating = False
For j = 1 To 4
k = Cells(Rows.Count, j).End(xlUp).Row
Range(Cells(2, j), Cells(k, j)).Sort key1:=Cells(1, j), order1:=xlAscending
Next j
For j = 1 To 4
For i = 2 To Cells(Rows.Count, j).End(xlUp).Row
If WorksheetFunction.CountIf(Columns(5), Cells(i, j)) = 0 Then
Cells(Rows.Count, 5).End(xlUp).Offset(1) = Cells(i, j)
End If
Next i
Next j
k = Cells(Rows.Count, 5).End(xlUp).Row
Range(Cells(2, 5), Cells(k, 5)).Sort key1:=Cells(1, 5), order1:=xlAscending
For k = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1
For j = 1 To 4
For i = Cells(Rows.Count, j).End(xlUp).Row To 2 Step -1
If Cells(i, j) = Cells(k, 5) Then
Cells(i, j).Cut Destination:=Cells(k, j)
End If
Next i
Next j
Next k
Application.ScreenUpdating = True
End Sub 'この行まで

※ 操作方法は前回同様です。
何度も失礼しました。m(_ _)m

この回答への補足

うゎ、動いた!すごいっ!ありがとうございます!

コードでお伺いしたい点があるのですが、
今回【商品リスト】が4つ(D列)までだったわけですが、
これをリストが5つ(E列まで)、10個(J列まで)などにする場合、
コードのどこをどう書き換えれば良いのでしょうか。

また、今回は1つの商品リストに十数個程度のデータしか入っていませんでした、
これがそれぞれの商品リストに数千入っていても、
このまま動作すると思って大丈夫でしょうか。

以上2つお聞かせ頂ければ幸いです。
なんにせよ重ね重ねありがとうございました。\(*T▽T*)/

補足日時:2012/06/05 00:22
    • good
    • 0

こんにちは!


VBAになってしまいますが・・・
一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, j, k As Long
Application.ScreenUpdating = False
k = Cells(Rows.Count, 5).End(xlUp).Row
If k > 1 Then
Range(Cells(2, 5), Cells(k, 5)).ClearContents
End If
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 4
If WorksheetFunction.CountIf(Columns(5), Cells(i, j)) = 0 Then
Cells(Rows.Count, 5).End(xlUp).Offset(1) = Cells(i, j)
End If
Next j
Next i
k = Cells(Rows.Count, 5).End(xlUp).Row
Range(Cells(2, 5), Cells(k, 5)).Sort key1:=Cells(1, 5), order1:=xlAscending
For j = 1 To 4
For i = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1
For k = 2 To Cells(Rows.Count, j).End(xlUp).Row
If Cells(k, j) = Cells(i, 5) Then
Cells(k, j).Cut Destination:=Cells(i, j)
End If
Next k
Next i
Next j
Application.ScreenUpdating = True
End Sub 'この行まで

※ 一旦マクロを実行すると、元に戻せませんので別Sheetでマクロを試してみてください。

関数でないので、ご希望の方法でなかったらごめんなさいね。m(__)m
    • good
    • 0

お示しのデータがシート1に有るとしてシート2には作業用のシートとして次のようにします。


B1セルからE1セルには商品リスト1から商品リスト4まで項目名を入力します。
B2セルには次の式を入力して右横方向にドラッグコピーします。

=IF(B1="","",COUNTA(Sheet1!A:A)-1)

A3セルには0を入力した後にB3セルには次の式を入力して右横方向にドラッグコピーします。

=IF(B2="","",SUM($B$2:B2))

A4セルには商品リストと文字を入力してからA5セルには次の式を入力して下方にドラッグコピーします。

=IFERROR(TRIM(INDEX(Sheet1!$A:$D,ROW(A1)-INDEX($3:$3,MATCH(ROW(A1)-0.5,$3:$3,1))+1,MATCH(ROW(A1)-0.5,$3:$3,1))),"")

その後にA5セルから下方のデータが表示されているセルまでを選択して「コピー」したのちにG1セルを選択してから「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。
G1セルから下方のデータが表示されているセルまでの範囲を選択してから「ホーム」タブの「並べ替えとフィルター」から「昇順」を選択して「現在選択されている範囲を並べ替える」にチェックをして「並べ替え」をクリックします。
その後にH1セルには1と入力したのちに、H2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(G$1:G2,G2)=1,MAX(H$1:H1)+1,"")

シート1に戻ってK1セルには全項目と入力したのちにK2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet2!H:H,ROW(A1))=0,"",INDEX(Sheet2!G:G,MATCH(ROW(A1),Sheet2!H:H,0)))

G1セルからJ1セルには商品リスト1から4を並べます。

G2セルには次の式を入力したのちにJ2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(A:A,$K2)>0,$K2,"")
    • good
    • 0
この回答へのお礼

Excelの関数を学ぼうと、本を買ってきました。
少しでも関数を使えるよう勉強していく所存です。
このたびはアドバイス頂きありがとうございましたm(_ _)m

お礼日時:2012/06/05 23:20

ExcelのバージョンがわからないのでExcel2003での方法を書きます。



元のシート名をSheet1とします。

別シートを追加して(Sheet2とする)、商品リスト1~4の内容を全てA列に貼り付ける。
A1に項目名を入れ、実際のデータは2行目以降に入れる。

Sheet2のA列をデータ > 並べ替えで昇順に並べ替える。

Sheet1のK1セルを選択状態にする。

データ > フィルタ > フィルタオプションの設定で「指定した範囲」を選択
リスト範囲を Sheet2!$A:$A
抽出範囲を $K$1
とし、「重複するレコードは無視する」にチェックを入れてOKを押す。

これで重複を除いた昇順のリストがK列にできます。

その後はG2セルに

=IF(COUNTIF(A:A,$K2),$K2,"")

という式を入れて、これをJ16セルまで複写すればいいです。
    • good
    • 0

まずはじめに、各列のデータを一つの列にコピペし、ピボットテーブルを使って全リストの一覧を作り、VLOOKUP関数で存在する場合のみデータを入れるようにしてはいかがでしょう。

この回答への補足

アドバイス頂きありがとうございます。

ピボットテーブル、VLOOKUP関数、ネットで調べてみました。
便利そうだなということは分かったのですが、
具体的にどうこの事例に当てはめれば
画像の通りの結果が得られるのか分かりませんでした。
すみません・・・

補足日時:2012/06/04 13:56
    • good
    • 0

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

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

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

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

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

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセル SMALL の機能を文字列でもできないか

数値に対し小さいほうからn番目というのは
SMALLで出来ますが、2文字以上(最低15文字くらい
まで)の文字列に対しそれを行う方法は無いでしょうか?

なんらかの式の組み合わせで出来ないものでしょうか?

要するに名前(よみがな)などを昇順(または降順)に読み込み
ソートさせた状態で別表に表示させたいのですが
文字1文字ならCODEで何とかなるのですが
2文字以上となると・・・

VB等のプログラムは一切使わず関数の駆使でなんとかならない
ものでしょうか?

Aベストアンサー

◆先程の回答で、順位を表示させなくてもできます
   A       B
1  ああああ  ああ
2  ああ     あああ
3  あい     ああああ
4  あう     あい
5  あいあい  あいあい
6  いいい   あう
7  あああ   いいい

B1=IF(COUNTA(A:$A)<ROW(),"",INDEX(A:A,MATCH(ROW(),INDEX(COUNTIF($A$1:$A$10,"<="&$A$1:$A$10),),)))
★下にコピー

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelで隣のセルと同じ内容に列を並べ替える方法

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずすみません。

例えば、

A|E *****
B|C *****
C|D *****
D|A *****
E|B *****

このような感じです。*はそれぞれの人特有のデータなので、ABCDE順に並べ替えても引き継がせたいデータです。

ECDABの隣にすでにあるABCDEの氏名(漢字)のデータをコピーし、
ECDABをABCDEの順番に並べ替えたいのです。


少しわかりにくいかもしれませんが、
もし何か良い方法ありましたら、お教えいただけますと幸いです。
よろしくお願い致します。

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずす...続きを読む

Aベストアンサー

例えばシート1のA2セルから下方にはECDABと氏名が並び横の列にはそれぞれの人のデータが入力されているとします。
そこでシート2には並び変えたい氏名の順序でA2セルから下方にABCEと入力します。
シート2のB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(Sheet1!$A:$A,$A2),IF(VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)="","",VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)),"")

その後にシート2全体を選択してから右クリックして「コピー」し、その後にシート2のA1セルにカーソルを移して右クリックし、「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。

Qエクセルで、重複データを除外して小さい値順に並べ替える関数

A列に、
500
80
200
200
100
300
と、データがあります。このデータのうち、重複しているデータ(200)を一つだけ表示させ、かつ、小さい順に並べ替えて、下記のようにしたいのですが…。
80
100
200
300
500

調べてみて重複データをチェックする方法や削除する方法などはありましたが、並べ替える方法が見つかりません。フィルタオプションかと思いましたが使い方がよくわかりません。配列数式のこともわかりません。オートフィルタやマクロは使いたくありません。よろしくお願いします。

Aベストアンサー

C列1行目から表示させるとします。

C1セルに
=IF(COUNT(A:A),MIN(A:A),"")

C2セルに
=IF(OR(C1="",C1=MAX(A:A)),"",SMALL(A:A,COUNTIF(A:A,"<="&C1)+1))

と入れて、必要なだけ下にフィルコピーします。

QExcel昇順関数について

データの昇順・降順方法として、メニューから「データ」→「並べ替え」とする方法がありますが、関数で同じことを実現できるものはあるのでしょうか?(例)A列に上から、「5、3、1、4、2」と並んでいるときに、(関数を入力した)B列上から「1、2、3、4、5」と表示する。

Aベストアンサー

A1からA5までデータが入っているものとして、
作業用としてC列に1行目から順位(1,2,3、・・・・)を作っておき、セルB1に
=LARGE($A$1:$A$5,C1)
とし、下の行までコピーします。

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QEXCEL 数式・関数でソートしたい

数式・関数でソートする方法を教えてください。

A列に日付、B列に品名、C列に個数が入ったSheet1があります。
これを日付順にソートしたSheet2をつくりたいと思っています。

Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。

よろしくお願いします。

Aベストアンサー

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータが増えるのなら、予想される最大行までコピーしておいてください。
( 最大500件だと思えば、J500 までコピー)
3.85E+08 ←のような感じで表示されても気にしないでください。
列幅を広げればちゃんと表示されます。 
作業列が目障りなら非表示にしてください。

Sheet2 の A2に↓
----------------------------------------------
=IF(COUNT(Sheet1!$J:$J)<ROW(A1),"",INDEX(Sheet1!$A:$C,MATCH(SMALL(Sheet1!$J:$J,ROW(A1)),Sheet1!$J:$J,0),COLUMN(A1)))
----------------------------------------------
作業列を J列と仮定しています。
J列以外の列を作業列に使う場合は、数式の $J:$J (3ヶ所)をその列記号に変更してください。
絶対参照($)にしているところは必ず絶対参照にしておいてください。
ROW(A1)、COLUMN(A1) の A1はそのままにしておいてください。
◆この数式を、そのまま右にC2までコピー
そのまま(A2~C2が選択された状態で)下に、Sheet1 のデータ件数分コピーしてください。
今後もSheet1のデータが増えつづけるのなら、予想される最大行までコピーしておいてください。
A列の表示形式を「日付」、B・C列の表示形式を「標準」にしてください。
  ◇
ROW(A1)、COLUMN(A1) の意味については、昨日のご質問の補足にお答えしておきましたので、そちらをご覧ください。

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータ...続きを読む

QEXCEL並び替え同じ文字の入ったセルを並べて表示する方法。関数。

お世話になります。
00101 00105
00104 00103
00103 00104

となっているものを
00101
00103 00103
00104 00104
00105
と同じ数字が横に表示されて同じ数字がないものは片方だけ表示される(上記のような状態)にする方法を教えてください。
関数を使うのであれば式を教えてくださいませ。
00101を縦横一列目としていただければわかりやすいです。

Aベストアンサー

こんばんは!
外していたらごめんなさい。
B列にA列と同じ数値が複数ある場合も列方向に複数表示するようにしてみました。

↓の画像のように作業用の列を2列使わせてもらっています。

作業列C2セルに
=IF(COUNT($A$2:$B$100)<ROW(A1),"",SMALL($A$2:$B$100,ROW(A1)))
D2セルに
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<>1),"",C2)
として、C2・D2セルを範囲指定し、D2セルのフィルハンドルでずぃ~~~!っと下へコピーします。

そして、結果のF2セルは
=IF(COUNT($D$2:$D$100)<ROW(A1),"",SMALL($D$2:$D$100,ROW(A1)))

G2セルは
=IF(COUNTIF($A$2:$B$100,$F2)<COLUMN(A1)+1,"",$F2)
としれG2セルを列方向にオートフィルでコピーします。

最後にF2~コピーした列2セルを範囲指定し、
最後の列のフィルハンドルで下へコピーすると
画像のような感じになります。
尚、数式はA列の100行目まで対応できるようにしています。

以上、長々と書きましたが参考になれば幸いです。
的外れなら読み流してくださいね。m(__)m

こんばんは!
外していたらごめんなさい。
B列にA列と同じ数値が複数ある場合も列方向に複数表示するようにしてみました。

↓の画像のように作業用の列を2列使わせてもらっています。

作業列C2セルに
=IF(COUNT($A$2:$B$100)<ROW(A1),"",SMALL($A$2:$B$100,ROW(A1)))
D2セルに
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<>1),"",C2)
として、C2・D2セルを範囲指定し、D2セルのフィルハンドルでずぃ~~~!っと下へコピーします。

そして、結果のF2セルは
=IF(COUNT($D$2:$D$100)<ROW(A1),"",SMALL($D$2:$D...続きを読む

Q【エクセル】1列内に複数ある同項目を、各項目一つずつに絞る方法

お世話になります。

アクセスで各商品コードごとに、「各施設の価格一覧」
集計をとるための下準備(各コード、重複なく一つずつに
絞られたテーブルを作りたいです)として、
エクセルシート内で無秩序に複数ある各商品コードから、
それぞれ一つずつだけ列挙されたシートを作りたいです。

1万行を超えているので、「集計」でまとめても
意味がないだろうし、この場合の対応策について
皆目思い浮かばないのですが、
よろしければアドバイスいただけないでしょうか。

よろしくお願い致します。

Aベストアンサー

こんばんは。

Accessを使うのも結構なのですが、Excelでは、フィルタオプションを使います。

メニューから
[データ]-[フィルタ]-[フィルタオプションの設定]

 指定した範囲(O)
 リスト範囲(L) に範囲を入力
 抽出範囲は、適当に1つのセルを選択し、

 □重複するレコードは無視する(R)にチェック

 OK

で、ユニーク・データが取れます。

これは、ユニーク・データを取るためのExcelのデータベース機能です。


人気Q&Aランキング