[[20190324032557]] 『横のデータを別シートの縦にはりつけたい』(ヨッシー) ページの最後に飛ぶ

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

 

『横のデータを別シートの縦にはりつけたい』(ヨッシー)

 シート1
 A B C D E F G
1     国語 
2    項項項項項  
2    目目目目目 
3 1氏名1 ○○○○○   
4 2氏名2 
5 3氏名3
6 4氏名4 

   個人のシート
 A〜       AA4
1
2
2
4
5
6
7
8 D〜    AA4  1 2 3 4 5 6       
9 国 項目      ○     
10  項目      ○
11  項目      ○
12  項目      ○
13語 項目      ○

の形式のシートがあります。シート1の横データを、個人シートの縦に貼り付けたいです。

Dim学年WS As Worksheet
Dim氏名WS As Worksheet
Dimコピーセル As Range
Dim貼付けセル As Range
Dim k As Long,i As Long

Set 学年WS=Worksheets("2年") '学年シートの入力
For g=0 To 21 '児童数引く1
Set 氏名Ws=Worksheets(学年Ws.Cells(2,3+g).Value)
For =0 To 4 '項目引く1
Set コピーセル=学年WS.Cells(3+g,3+i)
Set 貼付けセル=氏名WS.Cells(9+i,39)

ここまで書いてみたのですが、これでいいのか、縦に置き換えるにはどうしたらいいのか、「CUTメソッド」がいいようなのですが、どう書いたらいいのかわかりません。よろしくお願いします。

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


貼付けセル.Value= コピーセル.Value

こうでは、ありませんか?

(マナ) 2019/03/24(日) 09:15


あまりおぼえていませんが、リンクでしたか?
貼付けセル.Formula = "=" & コピーセル.address(external:=true)

(マナ) 2019/03/24(日) 09:20


編集かぶっちゃったし、私が質問のとらえ違いをしてるような気がしなくも無いですが・・

>縦に置き換えるにはどうしたらいいのか
行列を入れ替えて貼り付けるという意味であれば、「コピー」したセル範囲を「PasteSpecial Transpose:=True」で良いと思いますが、実際はどうなんでしょうか

一足飛びにやろうとするとかえって難しくなりそうなので、ループ部分は置いておいて、1つだけ(1ループ目だけ)の処理を手作業で実行してみて、マクロの記録を取ってみてはどうでしょうか?

あと、多重ループにされる予定みたいですが、内側のループの変数が抜けてませんか?
また、変数「g」の宣言が無いようです

   Sub 名も無きマクロ()
      Dim 学年WS As Worksheet, 氏名WS As Worksheet
      Dim コピーセル As Range, 貼付けセル As Range
      Dim k As Long, i As Long

      Dim g As Long '★追記

      Set 学年WS = Worksheets("2年") '学年シートの入力

      For g = 0 To 21 '児童数引く1
         Set 氏名WS = Worksheets(学年WS.Cells(2, 3 + g).Value)

         For i = 0 To 4 '★「i」で良いのかわかりませんがとりあえず
            Set コピーセル = 学年WS.Cells(3 + g, 3 + i)
            Set 貼付けセル = 氏名WS.Cells(9 + i, 39)
         Next i

      Next g

   End Sub

(もこな2) 2019/03/24(日) 09:39


Sub 国語の転記() '一覧表「国語」を転記する
    Dim 学年WS As Worksheet
    Dim 氏名WS As Worksheet
    Dim コピーセル As Range
    Dim 貼り付けセル As Range
    Dim k As Long, i As Long, g As Long

    Set 学年WS = Worksheets("2年")  '学年の入力

    For g = 0 To 1  '後ろの数字は児童数引く1の数

     Set 氏名WS = Worksheets(学年WS.Cells(3 + g, 2).Value)  '児童の選択

    For i = 0 To 4      '後ろの数字は評価項目番号引く1の数

            Set コピーセル = 学年WS.Cells(3 + g, 3 + i) '変えない
            Set 貼り付けセル = 氏名WS.Cells(9 + i, 39) '行の先頭数字は変える
            貼り付けセル.Formula = "=" & コピーセル.Address(external:=True)

    Next i
Next g

 End Sub
で動かしてみましたが、動きましたがデータが転記されません。

PasteSpecial Transpose:=True はどのように入れればいいのでしょうか。
(ヨッシー) 2019/03/24(日) 12:42


>動きましたがデータが転記されません。

氏名WS.Cells(9, 39)に、転記されませんでしたか?

(マナ) 2019/03/24(日) 13:18


マナさん、何も転記されていません。
(ヨッシー) 2019/03/24(日) 13:42

Worksheets("2年")のBB3セルには、何が入力されていますか?

(マナ) 2019/03/24(日) 13:48


↑間違いです、

B3セルには、何が入力されていますか。
あと,C3セルには、何が入力されていますか。

(マナ) 2019/03/24(日) 13:52


B3セルには、「木村 佳弘」。C3セルには、「A」が入力されています。
(ヨッシー) 2019/03/24(日) 13:56

では、木村さんシートの、AM9セルを確認してください。

(マナ) 2019/03/24(日) 14:02


AK9,AL9,AM9は結合セルで、AM9には何も記入されていません。
(ヨッシー) 2019/03/24(日) 14:23

では、↓は、どこに転記したいのですか?

>C3セルには、「A」が入力されています。

(マナ) 2019/03/24(日) 14:30


木村シートのAH9(結合セル)に転記されるようにしたいです。
(ヨッシー) 2019/03/24(日) 14:32

マナさん、次のコードで貼り付けることができました。「34」を「39」と勘違いしていました。すいません。

Sub 国語の転記2() '一覧表「国語」を転記する

    Dim 学年WS As Worksheet
    Dim 氏名WS As Worksheet
    Dim コピーセル As Range
    Dim 貼り付けセル As Range
    Dim k As Long, i As Long, g As Long

    Set 学年WS = Worksheets("2年")  '学年の入力

    For g = 0 To 4  '後ろの数字は児童数引く1の数

     Set 氏名WS = Worksheets(学年WS.Cells(3 + g, 2).Value)  '児童の選択

    For i = 0 To 4      '後ろの数字は評価項目番号引く1の数

            Set コピーセル = 学年WS.Cells(3 + g, 3 + i) '変えない
            Set 貼り付けセル = 氏名WS.Cells(9 + i, 34) '行の先頭数字は変える
            貼り付けセル.Value = コピーセル.Value

          Next i
      Next g

 End Sub
(ヨッシー) 2019/03/24(日) 18:37

コメント返信:

[ 一覧(最新更新順) ]


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