[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『並べ替えのマクロ』(高橋)
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.