• 締切済み

重複したデータを1つだけ表示

以下のページにて文字を続けて入力できるようになりました。 http://www.relief.jp/itnote/archives/001342.php​ しかし、以下のような場合、同じ値が何度も出てきます。 例) A1 200 A2 150 A3 180 A4 200 A5に”=ConcatenateRangeText(A1:A4)”と入力した場合、 A5に表示されるのは”200150180200”となります。 これを、以下のように、重複しているものは1度だけ、また数字の少ない順に表示することはやはり不可能でしょうか? 希望の表記⇒”150,180,200”

みんなの回答

noname#95859
noname#95859
回答No.2

VBAを使えば、何でもできます。 しかし、下記のものが、貴兄の望むものであるかはあまり自信はありませんが・・・ ユーザ関数を作成します----myConcatenateRange 使い方:該当のセルに =myConcatenateRange( と入れて、対象のセルを選びます。そして、最後に ")"で閉じます。 ---------------------------------- Function myConcatenateRange(ByVal hani As Range) Dim MyArray As Variant Dim myTemp() As Integer ' 動的配列を宣言します。 MyArray = hani.Value ReDim myTemp(hani.Count) i = 0 For Each myElement In MyArray i = i + 1 myTemp(i) = myElement Next flag = 1 Do While flag = 1 flag = 0 For j = 1 To i - 1 If myTemp(j) > myTemp(j + 1) Then flag = 1: Temp = myTemp(j): myTemp(j) = myTemp(j + 1): myTemp(j + 1) = Temp Next Loop For j = 1 To i - 1 If Target = "" And (myTemp(j) <> myTemp(j + 1)) Then Target = myTemp(j) Else If myTemp(j) <> myTemp(j + 1) Then Target = Target & "," & myTemp(j) End If Next Target = Target & "," & myTemp(j) myConcatenateRange = Target End Function 尚、対象エリヤは、1列である必要はありません。2行2列でもかまいません。 スクリプトの基本の流れ。 -対象エリヤの値をバリアント変数に持ってくる -これを1列の配列に入れ替える -ソートする(最も原始的なソートの方法) -吐き出し(この時、同じ値はスキップする) 数値を変更した後の再計算は、F9です。

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

>以下のページにて文字を続けて入力できるようになりました。 ​WEBサイトを見ても質問とどれが関係あるのかわかりますかね。 関係ない枕言葉なら書かないように。質問者にとって続きや発展で合っても、独立した課題なら書かない方を望む。 ーー >A5に”=ConcatenateRangeText(A1:A4)”と入力した場合、 A5に表示されるのは”200150180200”となります。 これはVBAを使ったユーザー関数ですか?その元コードはどこにあるのですか? 回答者に判るの? ーー A1:A6に 200 100 300 200 400 200 B1に=IF(COUNTIF($A$1:A1,A1)=1,A1,"")と入れてB6まで式を複写する。 A1:B6に 200 200 100 100 300 300 200 400 400 200 となる。 B7に =B1&B2&B3&B4&B5&B6 または =CONCATENATE(B1,B2,B3,B4,B5,B6) と入れると 200100300400 となる。これが質問の正解とは思わないが、これの回答を批評すれば、どうなれば良いのでしょう。 VBAを使っても良いのならできそうだがそういうのを望んでいるのでしょうか?

JJJJJJJJJ
質問者

補足

すみません。貼り付けた先のショートカットが間違っていました。 http://www.relief.jp/itnote/archives/001342.php

関連するQ&A

専門家に質問してみよう