• 締切済み

重複数字を削除して表示させるには

またまたお世話になります。 例えば下記のように左のセルから1つずつ数字が入っているとします。 1 2 3 3 4 5 これを下記のように重複数字を削除して並べたいと思っています。 1 2 3 4 5 できれば空白セルがないようにしたいです。 ×:1 2 3   4 5 ○:1 2 3 4 5 関数を使用してできますでしょうか? 空白セルがないようにするのがネックになっています。 アドバイスを御願い致します。

みんなの回答

回答No.4

》ただ単に重複文字を削除するだけなら、フィルターを使用すればCSVにして書き出すこともなく、簡単にできてしまいます。  あなたのお使いのExcelは、行だけでなく列に対してもフィルタが使えるんですか? 私のExcelではできません。ただ、私が知らないだけなら、やり方を教えてほしいですね。 》別の処理で差行列に入力されている数字を、最終的に重複文字を削除してメインの表示欄に出力できれば良いと思ってます。  こんなことは原質問には書かれていません。 》この処理を実現さえるのは、ちょっと難しいようですね。  当たり前です。質問に書かれていないのですから、答えようがありません。 》どうやら言葉足らずだったようです。  そんなカッコいいものではありません。回答者をバカにしています。 》また何かいいアイディアがありましたら、よろしく御願いします。  あきれて、二の句が出ません。

cuty_girl
質問者

お礼

おはようございます。 御返答ありがとうございます。 >あなたのお使いのExcelは、行だけでなく列に対してもフィルタが使えるんですか? これについてですが、行と列を入れ替えてからフィルター処理すれば可能かと。 >こんなことは原質問には書かれていません。 そうですね。 すみませんでした。 >そんなカッコいいものではありません。回答者をバカにしています。 回答者をバカにしているつもりはありません。 素直にお詫びしたのですが、何がお気に触れられたのでしょうか。 >あきれて、二の句が出ません。 お詫びをしているのに、なぜ納得して頂けないのでしょうか。 whitepepperさんをバカにしているつもりは、もうとうありません。 もちろん他の回答者の方もバカにはしていません。 自分の知識ではいいアイディアが浮かばないから、助言を求めるのは悪くないことではないでしょうか? 自分で調べて分かる程度の質問ならしません。 分からないから、助言を求めているのです。 あとこの質問に対して自己解決致しました。 関数では無理とされていましたが、うまく関数と作業用のスペースを使用すれば、空白セルを作る事なく希望していたような処理をすることができました。 解決したので、この質問は閉めさせて頂きます。

回答No.3

既に何度もこのサイトを利用されているのであれば、ご質問の情報不足をなんとかしてほしいですね。 》関数を使用してできますでしょうか? 》空白セルがないようにするのがネックになっています。 ご自分で考えられた関数とはどんなんですか? こんなんでしょうか?   =IF(B1=A1,"",B1) すなわち、Excelで1行下に行挿入して関数記載行を作り、そこの各セルに上記の関数を記載します。 すると、 1 2 3 3 4 5 1 2 3 □ 4 5 のようになります。 ここまでできれば、後は簡単です。 CSVで書き出せば、 1,2,3,3,4,5 1,2,3,,4,5 となっていますから、テキストエディタで",,"を","に置換すれば、 1,2,3,3,4,5 1,2,3,4,5 となります。 再度Excelで読み込めば、 1 2 3 3 4 5 1 2 3 4 5 と表示されます。

cuty_girl
質問者

お礼

御回答ありがとうございます。 どうやら言葉足らずだったようです。 すみません。 ただ単に重複文字を削除するだけなら、フィルターを使用すればCSVにして書き出すこともなく、簡単にできてしまいます。 別の処理で差行列に入力されている数字を、最終的に重複文字を削除してメインの表示欄に出力できれば良いと思ってます。 この処理を実現さえるのは、ちょっと難しいようですね。 また何かいいアイディアがありましたら、よろしく御願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>関数を使用してできますでしょうか 出来ないと思います。なぜかと言うことを納得して下さい。そうしないと、同じような出来ない質問をOKWEB等にあげることになります。 (1)どのセルに式を入れるとしても、(質問の例で)自分以外のセルの値が、空白かどうかは、判別できます。 しかしD1セルでD1の値を聞くとおかしくなります。 =IF(D1="",E1,D1) 空白だったとして、となりのE1のデータを持ってきて、詰めることは出来ません。 (2)D1以外(例としてE1)のセルに式を入れると して=IF(D1="",E1,E1)とすると、E1のセルの値が変ってしまいます。 (3)=IF(D1="",D2=F1,F2)のような書き方も出来ません。これと同じことを出きるのはVBAです。 (4)=IF(D1="",左へ詰める)と言うタイプの関数式はありません。=tumeru(D1="")のタイプの関数式もありません。(マイクロソフトの力を持ってすれば、簡単にこんな関数は作れますが、作らないのだと思います。関数式の分限を守っていて、これなどはVBAでやってくださいとのことだと思います。) これと同じことを出きるのはVBAです。 下記のことは関数式では出来ません。 集計か計算以外に、元の記録データを表上の別の場所に移動させることは関数式では出来ない。(一セルだけなら簡単ですが、それも自分を動かせない。落ちつき先のセルから取ってもらうイメージ) (A)セルの削除・セルの挿入 (B)条件に合うものを探し、該当するレコード(行)を上から詰めてセットする。行き先の場所(行)が、他のレコード(行)の状況により変わるので、不定だから。) (C)並べ替えする。(行き先の場所(行)が、他のレコード(行)の状況により変わるから。) (D)書式の設定(条件付書式設定以外。表示形式、色 フォント、罫線など)その他メニューから手操作で出来る ほとんどのこと。 (B)(C)(D)などは手操作かウイザード(フィルタ・ソートなど)ならできます。 VBAなら Sub test02() For i = 1 To 10 For j = 1 To 20 If Cells(i, j) = "" Then Cells(i, j).Delete Shift:=xlToLeft End If Next j Next i End Sub セル削除のVBAです。自動で察知するようにせず、わざと簡単にしてありますので、「To 10」は最下行の行数で置換え、「To 20」は最右列がA列から何番目の列かの数字で置換えて実行してください。

cuty_girl
質問者

お礼

御回答ありがとうございます。 そうですか。 やはり関数だけではできそうにないのですね。 まだエクセルは不馴れなので、私が知らない関数の使い方を御存知の方が、いい方法を教えて頂けたらと思いましたが。 VBAもわざわざ考えて頂き、ありがとうございます。 ぜひ参考にさせて頂きますね。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1

予想するに、ExcelかAccessなのかでしょうけど、これらの関数の中には複数のセルにまたがる表示を移動させたり削除したり上書きさせたりするものは存在しませんので、VBAに詳しい方の登場を待ちましょうね。

cuty_girl
質問者

お礼

御回答ありがとうございます。 ソフト名を記載しておくのを、忘れていました。 すみません(ー_ー) エクセル98を使用しております。 複雑なものになりそうですが、関数を組み合わせて何とか実現できるように試行錯誤中です。 直接結果を出力するのではなく、どこか別の行を作業用として使用して、その結果をメインの部分に表示さえることを考えています。 自分なりに、もうちょっとがんばってみます。 また何かありましたら、よろしく御願いします。

関連するQ&A