[[20190616232534]] 『同一列に配置されたデータを項目ごとに横並びにす』(tantan) ページの最後に飛ぶ

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

 

『同一列に配置されたデータを項目ごとに横並びにするVBA』(tantan)

いつも勉強させていただいてます

VBAについて質問させていただきます
今現在下記のようなDataを扱っています

名前  ID 観察日 項目?@ 項目?A
Aさん 001 1日目  100 50
Aさん 001 2日目   89 45
Aさん 001 3日目   90 40
Aさん 001 4日目  120 55
Aさん 001 5日目  110 60
Bさん 002 1日目  100 54
Bさん 002 2日目   98 57
Bさん 002 3日目   80 51
Bさん 002 4日目   85 48
Cさん 003 1日目   90 54
Cさん 003 2日目   98 51
Cさん 003 3日目   85 49
Cさん 003 4日目   88 45
Cさん 003 5日目   90 52
Cさん 003 6日目   95 57

このデータを
下記のように並び替えたいのです
Aさん Aさん Aさん Aさん Aさん

 001    001    001    001    001    
 1日目 2日目 3日目 4日目 5日目
 100    89     90   ,,,,,,,,,
  50    45     40   ,,,,,,,,

Bさん  Bさん、、、

とそれぞれの人で日付をもとに横方向に配列したいのですのですが
うまく行うアルゴルズムが思いつかないのです
 
手動で行う場合には、データをフィルタをかけて
各個人ごとに抽出したのちに、データ選択・コピー⇒行列入替えして貼り付け
を手動で行ってますが

これをVBAで自動的に行うすべはあるでしょうか?

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>うまく行うアルゴルズムが思いつかないのです

手動で行っている流れ、そのままではだめなのですか。

(マナ) 2019/06/16(日) 23:49


返信ありがとうございます。
順番にフィルターをかけるマクロが記述出来ないのです

IDがこの例えのように001番から順番に増えていくのであれば
IDでフィルターしてFor Next構文で1ずつ増加させてマクロで記載できるかもしれないですが

IDも規則性がないためどうしたらうまくフィルターかけれるのかが分かればと思うのですが
(tantan) 2019/06/17(月) 09:02


おはようございます 横入り失礼致します
抽出したいIDだけ別のセルに抽出したい順に書き出して
【マクロで重複削除、後ソートなんか、でもして】
そのセルを上から順にループしてフイルターかけて、抽出
したものを必要ならソートして行列入れ替え書き出しとか
でも。。。出来ない事はないかと。一案ですけど。。。(^^;

(隠居じーさん) 2019/06/17(月) 10:33


>順番にフィルターをかけるマクロ

AdvancedFilterで、1列目の値の重複なしのリストを作成。
それを順番に、抽出条件にして、AutoFilterを実行する例です。

 Option Explicit

 Sub test()
    Dim rngS As Range
    Dim rngC As Range
    Dim k As Long

    Set rngS = Worksheets("sheet1").Range("a1").CurrentRegion
    Set rngC = rngS(1).Offset(, rngS.Columns.Count + 2)

    rngS.Columns(1).AdvancedFilter xlFilterCopy, , rngC, True
    Set rngC = rngC.CurrentRegion

    For k = 2 To rngC.Count
        MsgBox rngC(k).Value & "でオートフィルタ"
    Next

    rngC.Clear

 End Sub

(マナ) 2019/06/17(月) 19:02


隠居じーさん様、マナ様
返信ありがとうございます。
 
早速試してみます!
リスト化して順番に実行するマクロを作れず困窮していましたので
本当に助かりました
ありがとうございます!
(tantan) 2019/06/17(月) 22:46

コメント返信:

[ 一覧(最新更新順) ]


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