[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『横持ちデータを縦持ちデータにしたい』(cake)
お世話になります。
ブックAにチェック(〇)欄があり、それらをブックBへコピーしたいと考えております。
ブックAのチェック(1)をブックBのG列へ
ブックAのチェック(2をブックBのH列へ
ブックAのチェック(3)をブックBのI列へ
ブックAのチェック(4)をブックBのJ列へ
ブックAのチェック(5)をブックBのK列へ
縦持ち、横持ちなどでよくわからず詰まっています。
詳細はスクリーンショット(URL)でご確認いただければ幸いです。
※IDは例として1111や2222としていますが、連番ではないです。
https://gyazo.com/88941758cc90deb08a6cb2c18901e5c2
< 使用 Excel:Excel2019、使用 OS:Windows10 >
ご教授いただけると幸いです。
(cake) 2022/02/16(水) 10:59
縦と横を転置するワークシート関数は TRANSPOSEです。 コピーして、形式を選択して貼り付けでも、行/列の入れ替えができます。
具体的に、何が解らないんでしょうか
見た感じ、年月の情報が何処に入ってるかわからないので、 第三者にはどこにコピーしたらいいのかまったく判断できません (´・ω・`) 2022/02/16(水) 11:35
これは、シフト表っぽいけど...チェックの意味の確認を
■ブックBレイアウト >※以降、IDが変わる毎にブックAからのコピー参照を各ID毎に変えていく
質問1. 各ID毎のチェックは、5個ずつですか?↓下のような割り当てですか? 1111(ID)さんなら、(チェック1) 〜 (チェック5) 2222(ID)さんなら、(チェック6) 〜 (チェック10)
質問2. 1111(ID)さんの場合で、(チェック3)が無い場合は I列を空白にするのか? それとも、J列を左に詰めるのですか?
質問3. また、各IDにおいて上記の質問2.(チェック3)が無い場合があるのかどうか?
質問4. チェックは、ブックAにチェック(〇)欄がありとありますが チェックボックスを使用しての(〇)欄ですか?
もし、チェックボックスを使用しての意味なら 各IDにおいてチェックの有無によって、ブックBレイアウトの反映を 切替できるようにするのですか?
(あみな) 2022/02/16(水) 12:46
あみな さん
引用にて回答失礼します。
各ID毎のチェックは、5個ずつですか?↓下のような割り当てですか?
1111(ID)さんなら、(チェック1) 〜 (チェック5) 2222(ID)さんなら、(チェック6) 〜 (チェック10) →ご認識の通りです。
質問2. 1111(ID)さんの場合で、(チェック3)が無い場合は I列を空白にするのか? それとも、J列を左に詰めるのですか? →空白にしたいです。
質問3. また、各IDにおいて上記の質問2.(チェック3)が無い場合があるのかどうか? →チェック1〜5で時々無い(空白)場合があります。
質問4. チェックは、ブックAにチェック(〇)欄がありとありますが チェックボックスを使用しての(〇)欄ですか? もし、チェックボックスを使用しての意味なら 各IDにおいてチェックの有無によって、ブックBレイアウトの反映を 切替できるようにするのですか? →ブックAのセルに「○」と直接入力しているだけの値です。 ブックAにIDがあれば、ブックBへ転記(反映)させたいと思っています。IDが無い場合(ブックBの9~13行目のように)は何もせずにブックBは詰めて後のID 2222を転記したいです。 (cake) 2022/02/16(水) 13:08
ブックAレイアウト
|[A]|[B] |[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]|[K]|[L]|[M]|[N]|[O]|[P]|[Q]|[R]|[S]|[T]|[U]|[V]|[W]|[X]|[Y]|[Z]|[AA]|[AB]|[AC]|[AD]|[AE]|[AF]|[AG]|[AH]|[AI]|[AJ]|[AK] [1] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [2] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [3] | | | | | | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31|※(日) [4] | |1111(ID)| | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |※(チェック1) [5] | | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | |○ |○ |○ |○ |○ |○ |○ |○ |○ |※(チェック2) [6] | | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |※(チェック3) [7] | | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |※(チェック4) [8] | | | | | | | | | |○ | | | | | | | | | | | | | | | | |○ | | | | | | | | | | [9] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [10]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [11]| | | | | |(間で空白になっているので、ここは転記したくない) | | | | | | | | | | | | | | | | | | | [12]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [13]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [14]| |2222(ID)| | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [15]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [16]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | |○ |○ |○ |○ |○ |○ |○ |○ | [17]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [18]| | | | | | | | | | | | | | | | | | | | | | | | | | |○ | | | | | | | | | | [19]| |3333(ID)| | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [20]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [21]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [22]| | | | | |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ |○ | [23]| | | | | | | | | | | | | | | | | | | |○ | | | | | | | | | | | | | | | | | [24]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
ブックBレイアウト(ブックAのチェックを以下の形にはめ込みたいです)
|[A]|[B] |[C]|[D]|[E]|[F] |[G] |[H] |[I] |[J] |[K] |[L] [1] | | | | | |日 |チェック1|チェック2|チェック3|チェック4|チェック5| [2] | | 111| | | |2021/8/1 |○ |○ |○ |○ | | [3] | | 111| | | |2021/8/2 |○ |○ |○ |○ | | [4] | | 111| | | |2021/8/3 |○ |○ |○ |○ | | [5] | |省略| | | | | | | | | |ID:1111の分はここーコピー [6] | | 111| | | |2021/8/22|○ | |○ |○ |○ | [7] | | | | | | | | | | | | [8] | | 111| | | |2021/8/31|○ |○ |○ |○ | | [9] | | 222| | | |2021/8/1 |○ |○ |○ |○ | | [10]| | 222| | | |2021/8/2 |○ |○ |○ |○ | | [11]| | 222| | | |2021/8/3 |○ |○ |○ |○ | | [12]| |省略| | | | | | | | | |ID:2222の分はここーコピー [13]| | 222| | | |2021/8/23|○ | |○ |○ |○ | [14]| |省略| | | | | | | | | | [15]| | 222| | | |2021/8/31|○ |○ |○ |○ | | [16]| |IDが変わるごとにブックAからのコピーを参照各ID毎に変えていく | |
(nm) 2022/02/16(水) 16:07
一応、ある程度は試行錯誤しながらできたのですが、8行目〜13行目のように、途中で空白があった場合にブックBのほうにも同じように空白が出来てしまいます。
If文で空白があったら何もせずに〜という動きにしたいのですが、B4にIDが無ければ何もしない、あれば転記。B9にIDが無ければ何もしない。あれば転記。
といった形で、上から順番に空白かどうかをチェックしていく方法はございますか?
(cake) 2022/02/16(水) 17:23
現時点でのものを提示されたらいかがですか?
# nm さん、ご苦労様です。ありがとうございました。
# 見知らぬファイルにはリスクがあるので近寄りたくないので、助かります。
# それに、いつ削除されるかわかりませんしね。消されたあとは質問がわからなくなりますよね。
(γ) 2022/02/16(水) 19:29
>一応、ある程度は試行錯誤しながらできたのですが >If文で空白があったら何もせずに〜という動きにしたいのですが
イメージだけですが 下記のコードの意図で...ご自身でできるなら良いと思います。
Option Explicit Sub Sample() Dim i As Long, MaxRow As Long Dim ws As Worksheet Set ws = Sheets(1) MaxRow = ws.Cells(Rows.Count, 2).End(xlUp).Row
For i = 4 To MaxRow If ws.Cells(i, 2).Value <> "" Then '(IDがあれば転記) Debug.Print i '' ID入力があれば行番号をイミディエイトウインドウに出力 Else '(IDが無ければ何もしない) End If Next End Sub
と言うことで…ご自身で出来る所まで頑張ってして 現時点でのコードを掲示されると良いと思います。
(あみな) 2022/02/16(水) 19:57
|[A]|[B]|[C]|[D]|[E]|[F] |[G] |[H] |[I] |[J] |[K] [1] | |ID | | | |日 |チェック1|チェック2|チェック3|チェック4|チェック5 [2] | |111| | | |2021/8/1 |○ |○ |○ |○ | [3] | |111| | | |2021/8/2 |○ |○ |○ |○ | [4] | |111| | | |2021/8/3 |○ |○ |○ |○ | [5] | |111| | | |2021/8/4 |○ |○ |○ |○ | [6] | |111| | | |2021/8/5 |○ |○ |○ |○ |○ [7] | |111| | | |2021/8/6 |○ |○ |○ |○ | [8] | |111| | | |2021/8/7 |○ |○ |○ |○ | [9] | |111| | | |2021/8/8 |○ |○ |○ |○ | [10]| |111| | | |2021/8/9 |○ |○ |○ |○ | [11]| |111| | | |2021/8/10|○ |○ |○ |○ | [12]| |111| | | |2021/8/11|○ |○ |○ |○ | [13]| |111| | | |2021/8/12|○ |○ |○ |○ | [14]| |111| | | |2021/8/13|○ |○ |○ |○ | [15]| |111| | | |2021/8/14|○ |○ |○ |○ | [16]| |111| | | |2021/8/15|○ |○ |○ |○ | [17]| |111| | | |2021/8/16|○ |○ |○ |○ | [18]| |111| | | |2021/8/17|○ |○ |○ |○ | [19]| |111| | | |2021/8/18|○ |○ |○ |○ | [20]| |111| | | |2021/8/19|○ |○ |○ |○ | [21]| |111| | | |2021/8/20|○ |○ |○ |○ | [22]| |111| | | |2021/8/21|○ |○ |○ |○ | [23]| |111| | | |2021/8/22|○ | |○ |○ |○ [24]| |111| | | |2021/8/23|○ |○ |○ |○ | [25]| |111| | | |2021/8/24|○ |○ |○ |○ | [26]| |111| | | |2021/8/25|○ |○ |○ |○ | [27]| |111| | | |2021/8/26|○ |○ |○ |○ | [28]| |111| | | |2021/8/27|○ |○ |○ |○ | [29]| |111| | | |2021/8/28|○ |○ |○ |○ | [30]| |111| | | |2021/8/29|○ |○ |○ |○ | [31]| |111| | | |2021/8/30|○ |○ |○ |○ | [32]| |111| | | |2021/8/31|○ |○ |○ |○ | [33]| |222| | | |2021/8/1 |○ |○ |○ |○ | [34]| |222| | | |2021/8/2 |○ |○ |○ |○ | [35]| |222| | | |2021/8/3 |○ |○ |○ |○ | [36]| |222| | | |2021/8/4 |○ |○ |○ |○ | [37]| |222| | | |2021/8/5 |○ |○ |○ |○ | [38]| |222| | | |2021/8/6 |○ |○ |○ |○ | [39]| |222| | | |2021/8/7 |○ |○ |○ |○ | [40]| |222| | | |2021/8/8 |○ |○ |○ |○ | [41]| |222| | | |2021/8/9 |○ |○ |○ |○ | [42]| |222| | | |2021/8/10|○ |○ |○ |○ | [43]| |222| | | |2021/8/11|○ |○ |○ |○ | [44]| |222| | | |2021/8/12|○ |○ |○ |○ | [45]| |222| | | |2021/8/13|○ |○ |○ |○ | [46]| |222| | | |2021/8/14|○ |○ |○ |○ | [47]| |222| | | |2021/8/15|○ |○ |○ |○ | [48]| |222| | | |2021/8/16|○ |○ |○ |○ | [49]| |222| | | |2021/8/17|○ |○ |○ |○ | [50]| |222| | | |2021/8/18|○ |○ |○ |○ | [51]| |222| | | |2021/8/19|○ |○ |○ |○ | [52]| |222| | | |2021/8/20|○ |○ |○ |○ | [53]| |222| | | |2021/8/21|○ |○ |○ |○ | [54]| |222| | | |2021/8/22|○ |○ |○ |○ |○ [55]| |222| | | |2021/8/23|○ |○ | |○ | [56]| |222| | | |2021/8/24|○ |○ |○ |○ | [57]| |222| | | |2021/8/25|○ |○ |○ |○ | [58]| |222| | | |2021/8/26|○ |○ |○ |○ | [59]| |222| | | |2021/8/27|○ |○ |○ |○ | [60]| |222| | | |2021/8/28|○ |○ |○ |○ | [61]| |222| | | |2021/8/29|○ |○ |○ |○ | [62]| |222| | | |2021/8/30|○ |○ |○ |○ | [63]| |222| | | |2021/8/31|○ |○ |○ |○ |
>コピーして、形式を選択して貼り付けでも、行/列の入れ替えができます。
を利用しました。
(1)2021/8/1〜2021/8/31の作成。
(2)チェックされている範囲のみ選択してコピー。
(3)行/列の入れ替えで貼り付ける。
(nm) 2022/02/16(水) 21:45
nmさんのレイアウトを参考に書いてみました。 nmさん、お疲れさまでした。
Sub Test() Dim ws1 As Worksheet, ws2 As Worksheet Dim v(1 To 31, 1 To 5), v2 As Variant Dim i As Long, j As Long, LastRow As Long, myID As String
Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") For i = 4 To ws1.Cells(Rows.Count, "B").End(xlUp).Row If ws1.Cells(i, "B").Value <> "" Then LastRow = ws2.Cells(Rows.Count, "B").End(xlUp).Row + 1 v2 = ws1.Cells(i, "F").Resize(5, 31).Value
myID = Replace(ws1.Cells(i, "B").Value, "(ID)", "") For j = 1 To 31 v(j, 1) = myID v(j, 5) = "2021/8/" & j Next ws2.Cells(LastRow, "B").Resize(31, 5).Value = v ws2.Cells(LastRow, "G").Resize(31, 5).Value = Application.Transpose(v2) End If Next End Sub
(ピンク) 2022/02/17(木) 07:38
ところで、タイトルの「横持ちデータを縦持ちデータに」ですが、
用語の使い方が正確ではありません。
これは、変更前も変更後も 横持ち データだと思います。
単に、横方向と縦方向の項目を入れ替えただけです。
縦持ちとはどういうものか、以下の記事を参照してください。
https://mathwords.net/yokomotitatemoti
(γ) 2022/02/20(日) 12:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.