質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

4回答

11872閲覧

エクセル関数を教えて下さい。 重複排除x並べ替え 関数のみ

退会済みユーザー

退会済みユーザー

総合スコア0

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2018/04/24 12:10

お世話になります。
エクセルの関数について質問です。

エクセルの A列A1からランダムの英文字が入っているとします。重複したデータがあります。
例えばこんな感じです。

A列イメージ
AAE
HIS
AAE
BEC
WIY

D列 に 英文字を昇順とした結果を”重複を排除した”結果として表示させたいです。

結果D列イメージ
AAE
BEC
HIS
WIY

関数のみで対応したくお手数かけますが、マクロや手動など
並べ替えを使うなど関数以外はやり方わかりますので回答しないでください。

とても困っています。お手数かけますがご教示の程よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/04/24 12:16

どのような理由で「関数のみで対応した」いのでしょうか。
退会済みユーザー

退会済みユーザー

2018/04/24 12:20

その他にも関数を組んでいます。1000を超える英文字数を2秒以内にチェックしたいので関数のみで対応したいです。いちいちマクロボタンを押している時間がありません。
sazi

2018/04/25 03:42

D列の利用目的について説明があれば、別なアプローチでの回答があるかもしれませんね。
退会済みユーザー

退会済みユーザー

2018/04/25 03:59

ありがとうございます。D列の目的は2つあります。 1つは重複の排除 2つめは昇順です。 利用目的は名前だと思ってください。例えばA列にJAMESやDANIなど名前が重複して順序もごちゃまぜになっています。D列には綺麗にDANI、JAMESと重複排除と順序昇順で表示されているイメージです。宜しくお願いします。
sazi

2018/04/25 04:05

チェック用途とかではなく、単にD列に結果を出力するだけですか?
退会済みユーザー

退会済みユーザー

2018/04/25 04:38

はい。具体的使用イメージは ①エクセルを開く ②名前データ貼付け ③重複排除と順序昇順 です。但し更新頻度が1分間に20回ほどインポート貼付けがあるので、いちいちマクロは面倒です。またプロシージャも重たくなるのは嫌なので関数限定にしました。とにかく関数で実現したいです。それだけです。
guest

回答4

0

さっきはごめんなさい。
関数だけでできちゃったので教えてあげる。
その代わり2列使います。

とりあえずC列をワーク用にします。
C1セル
=IF(ROW()=MATCH(A1,A:A,0),A1,"")
これを必要そうな行数分コピペ

D1セル
=IF(ROW()>COUNT(C:C),"",SMALL(C:C,ROW()))
これを同じ行数分コピペ

1分間に20回の更新に耐えられるのかは知りません。

投稿2018/04/25 05:18

編集2018/04/25 05:21
ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

いちいちマクロボタンを押すのが手間というのが動機なら
イベントプロシージャーではいかんのですか?


追記

まだ最終的な用途が見えないうちに勇み足ですが、用途によっては「じゃあピポットテーブルでいいんじゃない?」となるかもしれません。
自分は入力シートと集計シートを分けるのが好みです、というかそうあるべきと思ってます、むしろ入力と集計が同じシートに同居してるデータは汚いデータと思ってます、入力と集計が同じシートに同居すると面倒が増えるばかりでいいことありません。
複数のシートを同時に表示もできるわけですし、そんなに困らないでしょう。


Excelにはunique関数ないんだね、削除

投稿2018/04/25 02:51

編集2018/04/25 05:45
KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/25 02:58

ありがとうございます。イベントプロシージャなら更新頻度を意識せずとも出来そうですね。ただ固まりやすいのが嫌なんですよね。
退会済みユーザー

退会済みユーザー

2018/04/25 04:42

なるほど!確かにピボットテーブルだったら可能かもしれません。いくつか質問があります。重複の排除や昇順といった要素はピボットであらかじめ組んでおけるものなのでしょうか?例えばエクセルを開きます。データをコピペで貼り付けます。その瞬間に別シートのピボットは更新されますか?また今後はピボットした重複なし昇順データを使って、また元シートで関数を使います。そういった元シート→ピボット→元シートみたいな事もコピペをした瞬間に自動更新できますか? とてもいい案だと思います。ピボット下暗しダブルドリブルって感じです
KazuhiroHatano

2018/04/25 04:52

関数と同様ピポットテーブルはシートの列を参照しているのでデータが変われば即時反映されます フィルタやソート状態などが保持されるのは通常のシートと同様です
退会済みユーザー

退会済みユーザー

2018/04/25 04:55

ありがとうございます。ピボットから元シートにデータを戻す時(重複排除と昇順)も即時更新されるのでしょうか?
KazuhiroHatano

2018/04/25 06:11

参照でやってれば即時反映されるでしょう その場合はピポットテーブルの最終行に総計を表示してると ちょっと邪魔になるかもしれませんね
guest

0

以下の操作ではいかがでしょうか。
たいした手間ではありません。

  1. A列をD列にコピー
  2. D列を選択
  3. [データ]-[重複の削除]
  4. [データ]-[並べ替え]

この操作すら手間だというなら、上記手順をマクロに記録して、ショートカットキーかなんかで呼び出せば一発でできそうです。

関数を使うということは、A列と同じ行数分、D列のセルに数式を埋め込む必要があり、例えできたとしても現実的ではありません。

投稿2018/04/25 00:04

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Excelなど不要。そう、シェル芸ならね!

PS> gc a.txt AAE HIS AAE BEC WIY PS> gc a.txt|sort|gu AAE BEC HIS WIY

投稿2018/04/24 12:35

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/24 12:37

えーと。それはわかっています。。。 エクセルの関数で実現したいのです。
hichon

2018/04/24 13:12

CSE式を使えば関数のみでいけるようです。 つhttps://www.listendata.com/2013/05/excel-3-ways-to-extract-unique-values.html
退会済みユーザー

退会済みユーザー

2018/04/24 13:18

ありがとうございます。一点質問があります。この処理の前後にも20個ほど関数を組んでいます。その為、処理が実際に行われていればCESで最新のものをみなくても構いません。その場合は =IFERROR(INDEX($B$3:$B$15, MATCH(0,COUNTIF($D$2:D2, $B$3:$B$15), 0)),"") で実施できるのでしょうか? 当初の私の要件に当てはめた場合、上記関数はどのように書けば良いのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問