[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『配列から条件に合致したデータを小さい順に抽出し表示する』(エムエム)
初めて利用させて頂きます。
下記のデーターを下段の完成型のようなデータにしたいと思っています。
基本CDの配列データの中から、事業所CDに合致し、かつ、基本CDの小さい順にデータを抽出したいのです、配列データと合致するデータ検索の関数は分かっているつもりですが、更に合致データを小さい順に並べるという2つの関数の組み合わせ方がわかりません。
ご指導のほどよろしくお願いいたします。
*基本CDは、事業所CDと職員CDを組み合わせたものです。
≪データ≫ 事業所CD 略称 職員CD 職員名 基本CD 1 15 KS 10009 SSS 15.100091 5 15 KS 10012 AAA 15.100121 6 13 KN 10012 AAA 13.100122 13 14 KT 10016 KAKA 14.100161 17 32 TN 31004 NAK 32.310041 18 12 YS 31004 NAK 12.310042 19 12 YS 31004 NAK 12.310043 20 14 KT 31004 NAK 14.310044 21 12 YS 10020 YAM 12.100201 22 12 YS 10020 YAM 12.100202 25 15 KS 10006 KOB 15.100061 26 31 KR 10006 KOB 31.100062 27 13 KN 10006 KOB 13.100063 28 14 KT 10006 KOB 14.100064 29 15 KS 10015 KAN 15.100151 30 31 KR 10015 KAN 31.100152
≪完成≫ 事業所 順位 基本CD 12 1 12.100201 2 12.100202 3 12.310042 4 12.310043 13 1 13.100063 2 13.100122 14 1 14.100064 2 14.100161 3 14.310044 15 1 15.100061 2 15.100091 3 15.100121 4 15.100151 31 1 31.100062 2 31.100152 32 1 32.310041
< 使用 Excel:Excel2010、使用 OS:Windows7 >
基本CDをコピーして昇順でソートしてから、事業所、順位を数式でセットした方が楽のような
気がします。
(ウッシ) 2015/08/17(月) 11:40
>>出来れば途中に手作業を入れず、すべて自動的に完了させたいと思っています。
アップされた例は、「たまたま」基本CDの数値の順序が、最終形の順序ですけど、優先キーとしては 事務所CDが第一番なんでしょうね。
いずれにしても、回答側で、コードを書いて、はいどうぞ。で、(エムエム)さんから 「できました。解決です」なんて流れが一番早いのかもしれませんが、それでいいのですか?
というか、(ウッシ)さんが言われるような操作をすれば、とにかく自助努力で、最終形が作れるはずですね。 であれば、まず、その操作をマクロ記録してみる。そこからスタートして、固定領域の変数化等、できない部分に関してSOSをだす。
こんな段取りというのは(エムエム)さんにとっては考えられないアプローチなんでしょうか?
(β) 2015/08/17(月) 12:10
ところで、アップされた事例の、データですけど、一番左側の 1,5,6,13,・・・というのは 行番号なんですよね? それともデータの一部ですか?
行番号だとすれば、なぜ、とびとびなんですか? データの一部だとすれば、ここは、どういう意味がある列なんですか?
(β) 2015/08/17(月) 12:17
というようなものです。
(デイト) 2015/08/17(月) 12:25
ウッシさんの言われているような暫定データを作成し、マクロを記録して並べ替え、次の作業に入っていく方法は、一応考えてみました。
出来れば、関数の組み合わせで処理で切り場と思い質問させて頂きました。
βさんの指摘されたデータはご指摘の通り行番号です。欠番になる理由は、1人の職員が4個づつの番号を持っていますが、その時使用しなかったものを行を削除してupしたため欠番として処理なっています。
デイトさんの方法はトライしてみます。
(エムエム) 2015/08/17(月) 12:44
ピボットテーブルじゃ駄目なの? (GobGob) 2015/08/17(月) 13:03
そこまで関数に拘る必要が良く分からないですけど、
Sheet1からSheet2へという前提で、
Sheet2のセルA2に、
=IFERROR(IF(COUNTIF($A$1:A1,SMALL(Sheet1!B:B,ROW(A1)))=0,SMALL(Sheet1!B:B,ROW(A1)),""),"")
で下方にフィルコピー
Sheet2のセルB2に 1
Sheet2のセルB3に
=IF(C3="","",IF(A3<>"",1,B2+1))
で下方にフィルコピー
Sheet2のセルC2に
=IFERROR(SMALL(Sheet1!F:F,ROW(A1)),"")
で下方にフィルコピー
とかで、どうでしょうか?
(ウッシ) 2015/08/17(月) 13:33
> 欠番になる理由は、1人の職員が4個づつの番号を持っていますが、 > その時使用しなかったものを行を削除してupしたため欠番として処理なっています。
この意味がわからないんだけど、無視していいのなら、、、
A B C D E F G H I 1 事業所CD 略称 職員CD 職員名 基本CD 事業所 順位 基本CD 2 15 KS 10009 SSS 15.100091 12 1 12.100201 3 15 KS 10012 AAA 15.100121 2 12.100202 4 13 KN 10012 AAA 13.100122 3 12.310042 5 14 KT 10016 KAKA 14.100161 4 12.310043 6 32 TN 31004 NAK 32.310041 13 1 13.100063 7 12 YS 31004 NAK 12.310042 2 13.100122 8 12 YS 31004 NAK 12.310043 14 1 14.100064 9 14 KT 31004 NAK 14.310044 2 14.100161 10 12 YS 10020 YAM 12.100201 3 14.310044 (以下略)
G2 =IF(I2="","",INT(I2)) H2 =IF(G2="","",IF(G2=G1,H1+1,1)) I2 =IFERROR(SMALL(E:E,ROW(A1)),"")
下へフィルコピー
G列には値が全部埋まるけど、先頭だけ表示したいんだったら 条件付き書式で、数式を =G2=G1 として、フォント色を白にする。 (笑) 2015/08/17(月) 14:30
同じシートなら(笑)さんのコードで試してみてはどうですか?
一応直すなら、
=IFERROR(IF(COUNTIF($A$1:A1の$A$1:A1を
このコードをセットした列(例えばJ列のセルJ2なら)に合わせて
$J$1:J1
に変更しましたか?
(ウッシ) 2015/08/17(月) 16:09
これで今回の質問を終わらせて頂きます。
今後ともよろしくお願いいたします。
(エムエム) 2015/08/17(月) 16:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.