以前、こちらで質問し、良回答いただきましたが、再び下のように修正したいのです。
○下記、元一覧に「分類コード」の新しい列を挿入するので、修正後一覧には、「分類コード」をキーにした昇順の並べ替えを行った表示にする
ちなみに、設定した関数は、下の過去ログの↓、No.5の方の回答をそのまま使用しています。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1273783
<元一覧>
A B C D E F G
1 部門CD 部門 ID 内容 カテゴリ 分類 (分類CD)
2 130 経理 1 あ ア a 010
3 130 経理 2 い イ b 110
4 130 経理 3 う ア a 020
5 110 総務 4 え ウ a 010
6 110 総務 5 お イ d 250
7 550 営業 6 か ウ c 370
8 550 営業 7 き オ c 370
9 550 営業 8 く オ c 320
<修正後一覧>
A B C D E F G
1 (分類CD) 分類 ア イ ウ エ オ
2 010 a あ え
3 020 う
4 110 b い
5 250 d お
6 320 c く
7 370 か き
( )が今後新しく入れる列です。
※元一覧には既にあります。
※「分類」が複数ある場合、一番上に配列されるセル以外、下のセル全ては非表示となる設定となっています。
過去ログで、No.5の方の回答の関数を壊さずに、どうやったら「分類CD」を昇順に並べ替えられますでしょうか。
No.3
- 回答日時:
No2です。
こんにちはH2, K2, N2に入れる式は表記のとおりでよいですよー
たとえば
H2: =VALUE(G2)+ROW()/1000000
です..
前回のH2とまるで違うのは並べる規則を変えているからです
前回は同じ部門コードをもつ行がひとかたまりになるように、また部門CDとしては上から出現順に並ぶような式になっています
今回は分類コードを3桁の整数とみなして昇順にソートすることにしました。ただこのとき重複するような値があると,厄介なので、同じ部門CDではあってもユニークな値になるようにROW()を使います
1000000で割っているのは整数部(部門コードを数値化したもの)にはあくまでも影響を与えないようにするためです
excelは65536行までですので,65536より大きな値でrow()を割れば0以上1未満の範囲でユニークな値を求めることができます
割る値は100000でも99999でもソート結果には影響ありません
moon_piyoさん、補足の回答ありがとうございます。
無事、分類コードでソート出来ました。
ただ、私の説明不足もあり、修正が必要なかった部分がありました。
そこは、以下の部分です。
>K2: =INDEX(G$2:G$9,MATCH(ROW()-1,$I$2:$I$9,0))
これだと分類コードが分類名の代わりに表示されてしまうので、前回のままの数式にしてあります。
※これに気づくのに1時間要しました(^^;)
詳しい説明と根気のいる数式記述を何度もしていただきまして、本当にありがとうございました。
これで少しはお勉強も進んだ・・・かな?(笑)
No.2
- 回答日時:
前No5です。
こんにちはえーと過去ログを基準にしまして
H2: =VALUE(G2)+ROW()/1000000
K2: =INDEX(G$2:G$9,MATCH(ROW()-1,$I$2:$I$9,0))
N2: =INDEX(F$2:F$9,MATCH(ROW()-1,$I$2:$I$9,0))
という修正をおこなってみてください。期待どおりの動きかどうかわからないですが...
それから、この場をお借りしまして、過去ログについて各列の補足をさせてください
H列
基準となる項目をある規則で数値化した値。この値にてソートします。前回は文字列でしたので
2行目から自分のセルの行までに自分と同じ内容のセルが1つだけあれば(つまり値が最初に出現した場合) ROW()
2つ以上あるなら同じ内容をもつ行のH列の値の整数部の平均(つまり最初に出現した行のROW()になる) + row()/1000000
これで同じ文字列をもつ列は整数部は共通で小数部は出現順に増えていくような値になります
I列
H列の各値の順位をrank関数にもとめています
K列~N列
もとデータから必要な列を取り出しI列の順位順にソートしたテーブルをつくります。同じ順位を返す行が2つ以上あると正しくとりだせないのでH列はユニークになるようにしています
K列に横の項目(部門CD)
L列に縦の項目(カテゴリ)
M例にデータの内容
N列以降はその他必要な列です
P列
同じ部門CDかつ同じカテゴリのデータが自分も含め今までにいくつあったかをカウントとしています
同じ条件のデータが複数あった場合、自分はそのなかで何番目なのか決定しています
Q列
各部門CDの縦の幅を決める値です。縦方向にいくつの行が入るのかを数えます
R列
各部門コードの開始位置オフセットです
この値にP列の値を加えた値の行がデータを表示する場所になります
S列
部門CDがどの位置で切り替わったかどうかをチェックする値です。見出しを出力するのに使います
T列
現在行をいれています。条件にあてはまる行番号を取得するときに使います
ようやく結果の表示です...
V~W列
P列の値 + R列の値 = 現在行-1 という条件をみたすような行をさがし、見出し項目を出しています。
X~AB列
P列の値 + R列の値 = 現在行-1 かつ カテゴリの内容が一致するという行をさがし対応するM列の値を出しています
この回答への補足
moon_piyoさん、再び回答いただけて感謝です!
前回の質問の時には、少々違う設定を求められていたので、ポイントも次点にしてしまいましたが、後でmoon_piyoさんの回答の方がExcelには都合が良いと、やっとウチのおじ様も気づいて、そのまま使用させていただいてます。
以前はホントにありがとうございました。
ところで、前回の回答の解説もしていただき、関数の勉強中の私にはとてもありがたいのですが、今回、「前回の回答をふまえて」との回答ですが、以下の場所はどこをどう直せば良いのでしょうか。
>H2: =VALUE(G2)+ROW()/1000000
前回は、以下の式でしたよね。
H2: =IF(COUNTIF(F$2:F2,F2)=1,ROW(),SUMPRODUCT((F$1:F1=F2)*INT(H$1:H1))/SUMPRODUCT((F$1:F1=F2)*1)+ROW()/100000)
色々試して、H列の修正後記述をそのまま上書きした場所が、下の場所になります。
○(F$1:F1=F2)*1)+ROW()/100000
○+ROW()/100000
※最後の方の
解説していただいてるのですが、いまだ細かい修正までは出来ず困っています。
もう少しお付き合いいただけたら嬉しいです。
No.1
- 回答日時:
過去ログ見ました。
あの関数群を解読するのはかなりな手間です。
検証されたなら、その検証結果をのせて頂くと、
もう少し、みなさん回答できるのでは?
失礼ですが、もし検証なさっていないようなら、
この際、関数でなくVBAでも結果がよければよいのでは?
関数はVBAより、後のメンテナンスが大変です。この後もどんどんバージョンアップの可能性はあると思いますので、もし関数を熟知していらっしゃらなくて、このようにバージョンアップのとき他人に頼られるのであれば、やはりVBAをご使用になったほうがよろしいかと思います。
fly_moonさん、アドバイスありがとうございます。
>このようにバージョンアップのとき他人に頼られるのであれば
そうなんですよ。
こういうサイトで、いちいちよそ様に聞かないと仕事にならないなんて、自分でもイヤだし能率は下がるしで、改善しないといけないんですが、なにぶん、急にVBAだの関数だのを使う仕事に就いてしまい、今ひたすら猛勉強中です。
・・・でも、人間、そうそうすぐには使えるようにはなりません(-_-;)
ただ、どちらも少々かじってる最中なので、解説していただけると、それを応用も出来るかとは思います。
それまで、もう少し助けていただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Excel(エクセル) たくさんあるフォームコントロールを効率よく確認するには 1 2022/12/24 12:27
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
アクセスクエリの計算
-
エクセルのデータをアクセスに...
-
【至急・画像あり】建物or住所...
-
Accessのリンクテーブルのパス...
-
Accessのクエリで、replace関数...
-
日付のテキストボックスに(例...
-
Accessのスプレッドシートエク...
-
Access VBA を利用して、フォル...
-
Microsoft Accessをクレジット...
-
Accessのデータ型の日付/時刻型...
-
accessの代わりになるもの
-
ms access 2013で、チェックボ...
-
マイクロソフト アクセス2021の...
-
エクセルのマクロについて教え...
-
AccessVBAで任意の複数リンクテ...
-
Access Error3061 パラメータが...
-
Access VBA [リモートサーバー...
-
Accessのフォーム上のテキスト...
-
accessでlaccdbファイルが削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Access Error3061 パラメータが...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
Accessのリンクテーブルのパス...
-
Access VBA [リモートサーバー...
-
ACCESS VBA でのエラー解決の根...
-
accessデータを指定したExcel、...
-
Accessのスプレッドシートエク...
-
CSVファイルの「0落ち」にVBA
-
【Access】Dcount関数の複数条...
-
Accessのフォーム上のテキスト...
-
Access VBA を利用して、フォル...
-
実行時エラー3131 FROM 句の構...
-
Vba Userformを前面に出すについて
-
Accessでフォームに自動入力し...
-
Accessレポートのチェックボッ...
-
Accessのテキストボックスの入...
-
Access 複数条件検索の設定が上...
-
accessのフォームに設置したボ...
おすすめ情報