[[20151001165000]] 『並び換え』(けんさん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『並び換え』(けんさん)

	集計表								

 サイズ	計画数	要尺	必要m	計画数	要尺	必要m	計画数	要尺	必要m
    RE                       NV                      OW
 M	415	0.126 	52.29 	420	0.126	52.92 	380	0.126	47.88 
 L				470	0.139	65.33 	480	0.139	66.72 
 LL	300	0.166 	49.80 				380	0.166	63.08 
 3L	200	0.180 	36.00 						

< 使用 Excel:Excel2007、使用 OS:Windows7 >


もっと何をどうしたいか説明して頂かないと、さっぱり判りません。

とりあえず、Excelには「データ」の「並び替え」機能がありますよ。
自動化したいならば、操作をマクロ記録するだけです。
(???) 2015/10/01(木) 17:17


すみません!
操作間違いをしました、追加しますのでお願いします

 集計表の並び替え

 RE          M        415       0.126     52.29
 RE          LL       300       0.166     49.80
 RE          3L       200       0.180     36.00
 NV          M        420       0.126     52.92
 NV          L        470       0.139     65.33
 OW          M        380       0.126     47.88
 OW          L        480       0.139     66.72
 OW          LL       380       0.166     63.08
この様に並び替えをしたいので宜しくお願いします。


それ、並び替えではなく、データ整形ではないかと…。

 Sub test()
    Dim wkOut As Worksheet
    Dim i As Long
    Dim j As Long
    Dim iMax As Long
    Dim iR As Long

    Set wkOut = Sheets("Sheet2")
    wkOut.Cells.Clear

    iMax = Cells(1, Columns.Count).End(xlToLeft).Column

    For i = 2 To iMax Step 3
        For j = 3 To Cells(Rows.Count, "A").End(xlUp).Row
            If Cells(j, i).Value <> "" Then
                iR = iR + 1
                wkOut.Cells(iR, "A").Value = Cells(2, i + 1).Value
                wkOut.Cells(iR, "B").Value = Cells(j, 1).Value
                wkOut.Cells(iR, "C").Value = Cells(j, i).Value
                wkOut.Cells(iR, "D").Value = Cells(j, i + 1).Value
                wkOut.Cells(iR, "E").Value = Cells(j, i + 2).Value
            End If
        Next j
    Next i
 End Sub
(???) 2015/10/01(木) 17:52

集計表を関数を使用して並び替え後に別の表に反映させたいのです
宜しくお願いします。

 To(けんさん) さん

 回答ではありません。

 レスは、画面下のコメント欄とHN欄に書きこんでアップしてください。
 でないと、↑のように、レスがあったのかないかも、目立たずわかりにくいですね。
 だれがいつ、レスしたのかもわかりませんし。

(β) 2015/10/03(土) 16:40


失礼しました
再度お願いします。
集計表を関数を使用して並び替え後に別の表に反映させたいのです
宜しくお願いします。

(けんさん) 2015/10/03(土) 17:30


マクロの自動記録案を書いても、特にマクロが駄目という反応は無かったので、マクロ例を書きました。
関数だと、空欄の場合には詰めるという部分が難しいので、マクロ案がベストと思いますが、駄目なのですか?
(関数を考えるより、全部手作業でコピペする方が早いですよ)

マクロを使ったことがないから、という答えは却下です。今回やってみればよいだけ。
(???) 2015/10/05(月) 11:34


(???)様 ご指導有難うございます。
マクロで進めてみます、不明点が有りましたら投稿させて頂きますので宜しくお願いします。
(けんさん) 2015/10/06(火) 08:45

お世話になります。
マクロでやってみましたら下記のような表示になりました、カラー表示(RE、NV、OW)がありません
どこか間違えていますか?それとも出来ないのでしょうか?
宜しくお願いします。
 M	415	0.126	52.29
 LL	300	0.166	49.8
 3L	200	0.18	36
 M	420	0.126	52.92
 L	470	0.139	65.33
 M	380	0.126	47.88
 L	480	0.139	66.72
 LL	380	0.166	63.08

(けんさん) 2015/10/06(火) 10:27


 横からしつれいします。
 >wkOut.Cells(iR, "A").Value = Cells(2, i + 1).Value
 →wkOut.Cells(iR, "A").Value = Cells(2, i).Value
 かもしれないですね
(さくらだ) 2015/10/06(火) 10:36

(さくらだ)様
出来ました有難うございました。
たすかりましたm(__)m
今後も宜しくお願いします。

(けんさん) 2015/10/06(火) 11:00


あ、さくらださんのおっしゃるとおりです。2列目からループするように途中で考えを変えたもので、変え忘れてました。
で、マクロで実行は簡単だったでしょう?
(???) 2015/10/06(火) 11:30

(???)様 ご指導有難うございました。
張り付けてのマクロでしたので出来ましたが構文は難しいですね?

この『並び替え』は関数使用で並び替え方法の指導を願いします。
Sheet1の中に品番ごとの集計表が複数あります、その表を関数を使用後に並び替えをして集計表を作成したいのです。
前回【空欄の場合には詰めるという部分が難しいので、マクロ案がベストと思います】とコメントして頂きましたが関数使用での並び替えは無理でしょうか?
出来れば自動化に持っていきたいのです。
宜しくお願いします。
(けんさん) 2015/10/07(水) 17:10


複数あるという集計表が、具体的にどのセル(何行、何列か判るような例が欲しいです)なのか、
行、列の追加はあるのか、等の詳しい状況を、全て実例付きで表現してください。話はそれからです。

あと、私は式作成には膨大な時間がかかる割に、マクロなら数分で作成しますので、空欄を詰めて複数列、
複数表を1つにまとめるような複雑な要求を数式解決してくれ、というご要望には応えられません。
行は不定です、とか、更に無茶な難題を追加されそうですし、その度に数式修正依頼されても困りますから。
(範囲内全部連結してから文字列置換で空欄除去後、分割出力すればできそうに思いますが、考えたくない…。
カラー表示とやらが、他のデータとは違うルールで並んでいるのも困ります)

1年くらいかけて、ご自分で試行錯誤してみてはいかがでしょうか?
(???) 2015/10/07(水) 17:47


 とりあえず式の場合。
 A30セルから集計表を作る場合。

 他の場所に作成する際に自分で式を修正できない場合は使わないほうがいい。
 一応式を作りはしたがマクロのほうが適切だと思う。

 A30セル
 =IF(ROW(A1)<=COUNT(B$3:B$6),B$2,IF(ROW(A1)<=COUNT(B$3:B$6,E$3:E$6),E$2,IF(ROW(A1)<=COUNT(B$3:B$6,E$3:E$6,H$3:H$6),H$2,"")))

 B30セル
 =IFERROR(INDEX(A$1:A$6,SMALL(IF(INDEX(B$3:H$6,,MATCH(A30,B$2:H$2,0))<>"",ROW(A$3:A$6),""),COUNTIF(A$30:A30,A30))),"")
 B30セルの式は式を確定する際にShiftキーとCtrlキーを押しながらEnterキーで確定する。
 (確定後、式が{}で囲まれればOK)

 C30セル
 =IFERROR(TEXT(SUMPRODUCT(($A$3:$A$6=$B30)*($B$2:$H$2=$A30)*B$3:H$6)&"","G/標準;;")*1,"")

 A30セルとB30セルは下へフィルコピー、C30セルは右および下へフィルコピー。
(ねむねむ) 2015/10/08(木) 10:22

(ねむねむ)さま ご指導有難うございました。

(けんさん) 2015/10/08(木) 12:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.