[[20160429220141]] 『並べ替えのマクロ』(高橋) ページの最後に飛ぶ

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

 

『並べ替えのマクロ』(高橋)

 Sheet1のC列には、A列に出てきた工程名の重複を取り除き、その合計を
 D列に。さらに、C列の工程順をSheet2の工程順に並び替えるマクロを
 ご教示お願いします。

    Sheet1                              Sheet2
    A      B      C        D             A                
 1  工程名  数量 工程名 工程数量       工程順  
 2  あ    5     あ    8          う                
 3   い    2   い        5       い   
 4  い    3   う        7       お  
 5   う    2   え        1       あ  
 6  う    5   お        4       え  
 7   あ    3                           
 8   え    1
 9   お    4  

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 こんばんわ。

[[20160427202851]] 13:15 『訪問回数と最終訪問日のレコードの表示』(k-pon)

 こちらとかなり似てますね。
 ここで提示した私のコードを少し修正すれば質問内容と同じ事が実現できます。

 まずはご自身でトライされてみて、分からない事は聞いて下さい。

(sy) 2016/04/29(金) 23:56


統合を使う方法もあります。こんな感じです。

 1)統合でC列D列に集計結果を書き出します。
 2)シート2のリスト範囲を1次元配列にします。Transposeを使います。
 3)2)の配列をJoinで結合し、ユーザー設定リストとし、並べ替え実行します。

(マナ) 2016/04/30(土) 00:46


 そうでした。

 そう言えば統合がありましたね。

(sy) 2016/04/30(土) 07:34


まだ見ていますか?
これならマクロ不要かも。

 1)並び替えの順番をユーサー設定リストに登録
 2)C列D列にピボットテーブルを作成(元データ範囲はA列B列全体)
 3)フィールド「工程名」のフィルターで(空白)を表示しない

 これで、データ変更の際は、更新ボタンをクリックするだけ

(マナ) 2016/05/04(水) 11:24


統合を使ったマクロだと、こんな感じです。
 まずは手作業で試してからでないと、コードの理解はできないかもしれません。
で、手作業でできるようになると、わざわざマクロ化するのが面倒になるかも。
http://www4.synapse.ne.jp/yone/excel2010/excel2010_syukei2.html
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_consolidate.html
http://officetanaka.net/excel/vba/tips/tips148.htm

 Sub test()
    Dim 統合元 As Range, 統合先 As Range
    Dim リスト

    With Worksheets("Sheet1")
        Set 統合元 = .Columns("A:B")
        Set 統合先 = .Columns("C:D")
    End With

    With 統合先
        .ClearContents
        .Cells(1).Consolidate _
            Sources:=統合元.Address(, , xlR1C1, True), _
            Function:=xlSum, _
            TopRow:=False, _
            LeftColumn:=True
        .Rows(1).Value = Array("工程名", "工程数量")
    End With

    With Worksheets("Sheet2")
        リスト = Application.Transpose(.Range("A2", .Range("A1").End(xlDown)))
    End With

    With 統合先.Parent.Sort
        .SortFields.Clear
        .SortFields.Add Key:=統合先.Columns(1), CustomOrder:=Join(リスト, ",")
        .SetRange 統合先
        .Header = xlYes
        .Apply
    End With

 End Sub

(マナ) 2016/05/04(水) 11:53


コメント返信:

[ 一覧(最新更新順) ]


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