プロが教えるわが家の防犯対策術!

りんご
みかん
おれんじ
おれんじ
ぶどう
おれんじ
みかん

とあるものを隣の列に

りんご
みかん
おれんじ
ぶどう

と表示させたいのですが、
EXCELの関数で行う方法はないでしょうか?

A 回答 (5件)

こんばんは。



元データが A列にあり、抽出は B列だとします。

■作業列を使う方法です。

F列を作業列にします。(作業列はどの列でもかまいません)
データが1行目から始まっているとすれば、

F1に↓
-----------------------------------
=IF(COUNTIF($A$1:A1,A1)=1,ROW(),"")
-----------------------------------
◆1行目以外から始まっている場合(または、元データが A列以外の場合)は、セル位置を変更してください。

上の数式を A列のデータ最終行までコピーしてください。
A列のデータが今後も増えるのなら、予想される A列の最大行までコピーしてください。
A500 あたりまでデータが入るだろうと思えば、F500までコピー。

B1に↓
--------------------------------------------------------
=IF(COUNT(F:F)<ROW(A1),"",INDEX(A:A,SMALL(F:F,ROW(A1))))
--------------------------------------------------------
◆元データが A列以外なら A:A をその列記号に変更してください。
◆作業列が F列以外なら、F:F(2ヶ所)を、その列記号に変更してください。
◆データが1行目以外から始まっている場合でも、ROW(A1)の A1 はそのままにしておいてください。

この数式を、必要分(重複を除いた実数以上)下にフィルコピー。
実数がわからなければ、適当に(多めに)コピーしておいてください。

作業列が目障りなら非表示にしてください。
    • good
    • 0
この回答へのお礼

実はこれからさらに派生して、
違うシートにある部分をマージしなければならないのです。
INDEX関数は使用したことがないのですが、
こんな使い方ができるのですね。
チャレンジしてみます。
ご回答ありがとうございました。

お礼日時:2005/07/16 15:08

仮にセルA1にデータがあるとしたら隣接セルB1に次式を入力します。



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

上記式のA1とは対象データの開始位置(セル)ですので、ご自身のデータにあわせてA1を変えて下さい。あとはオートフィルでコピー、セルB1の値は重複しない値になると思われます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
今回は関数のみで行いたいのです。
確かにそれぞれ単体のデータでの抽出はできるのですが、
並べるにはオートフィルを使用しなければならないので
今回は使用することが出来ませんでした。
質問内容があいまいで申し訳ありません。

お礼日時:2005/07/16 16:33

何度も回答してますが


Sheet2の
A2から下にデータがあるとして
B2に=IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,"")
と入れて下方向に複写します。
これで初出のものの行に、上行から1から順に連番を振れます。
別シートSheet3にいって
A2に=OFFSET(Sheet2!$A$2,MATCH(ROW()-1,Sheet2!$B$1:$B$10,0)-2,0)
と入れて下方向に式を複写します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
やりたいことひとつをとっても、
いろいろな方法があるのですね。
実際に試してみます(^^)

お礼日時:2005/07/16 16:35

こんばんは。



関数で行うと、以下のような式だけで、フィルコピーすれば、出てきます。
作業列は要りません。

=IF(SUM((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*1)<ROW(A1),"",INDEX($A$1:$A$6,SMALL(IF(MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6),ROW($A$1:$A$6),""),ROW(A1)),)

配列数式ですから、一旦式を入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押すようにしてください。式が、{ } で囲まれます。

なお、これは、メニューの[データ]-[フィルタ]-[フィルタ・オプション]の「重複するレコードは無視する」というオプションで、一気に出来ます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
いろいろ関数を組み合わせないといけないかなと思ってたので、一発でできるとは驚きました。
違うシートにあるデータでもできるのでしょうか?
早速試してみます(^^)

お礼日時:2005/07/16 16:37

こんばんは。



>違うシートにあるデータでもできるのでしょうか?

もちろん、式のほうも、フィルタオプションのほうも、どちらも出来ます。

まず、式のほうです。

これは、ご存知ですか?
私の良く使う手ですが、{Altキー}を押しながら、「式」をドラッグして、{シート・タブ}まで来ると、その選択したシートに「式」もいっしょについていきます。

次に、「フィルタ・オプション」のほうですが、ちょっと、間違いやすいです。

1.最初に、ペーストする側のシートを開けます。

2.ペーストする場所にセルポインターを持ってきてきて、
  メニューの[データ]-[フィルタ]-[フィルタ・オプション]

3.リスト範囲で、元(ソース)のデータの範囲を選択します。

4.「○指定した範囲」にチェックを入れます。

5.三段目の
  「抽出範囲」に、一つセルを選択します。(多くを選択するとエラーが返ることがあります。)

 例えば、「A1」

 にマスウポインタを当てます。

6.レ 重複するレコードは無視する にチェックを入れてください。

7.[OK]をクリックします。

これで完成です。このフィルタ・オプションのすばらしいのは、1万のデータの中からでも、一瞬で、ユニーク(唯一)なデータを抽出してきます。

なお、関数のほうは、Excel2000以下ですと、5,500個ぐらいのデータより多いと、エラーになることがあります。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
これこそ私が求めていた方法です!
(^0^)
早速試して見ます。
わかりやすくご丁寧な回答ありがとうございました。

お礼日時:2005/07/21 11:40

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