[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同一列に配置されたデータを項目ごとに横並びにする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
(隠居じーさん) 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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.