[[20220216103736]] 『横持ちデータを縦持ちデータにしたい』(cake) ページの最後に飛ぶ

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

 

『横持ちデータを縦持ちデータにしたい』(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 >


上記スクリーンショット、少しわかりづらいため、コメントを追加したものをアップします。
https://gyazo.com/0ec6e8eec15f14c56a7b89298eb60e3d

ご教授いただけると幸いです。
(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


前提として明確にしてほしいのは、次の二点。
(1)値を転記したいのか、式を設定したいのか、どちらなのでしょう。
(2)元データで空白行になるときは、必ず5行単位で空白になるのか、
  いやケースによっては3行空くときもある、ということなのか、どちらなんですか?

現時点でのものを提示されたらいかがですか?

# 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


ブックBレイアウトを省略せずに1111(ID)と2222(ID)をそれぞれ2021/8/1〜2021/8/31まで転記してみた。
(cake)さん、これでいいんですよね。

     |[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.