• ベストアンサー

VBA列を行に入れ替える方法

エクセル2010を使用してるのですが シート1の13列ずつ飛び飛びのセルをコピーして 1......2.....3.....4......5......6.....7.....8.....9....10 シート2のA1からA10に貼り付けする 1 2 3 4 5 6 7 8 9 10 For nextのコードで記述するにはどういう方法がありますでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Dim i As Long For i = 1 To 10   Worksheets("シート1").Cells(1, 13 * (i - 1) + 1).Copy Destination:=Worksheets("シート2").Cells(i, 1)   ' 1 行目を 1 列目にコピーする場合 Next i

tackty
質問者

お礼

ご回答ありがとうございました。 やりたいことができました。 有難うございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

?????? VBAやったことあるなら、とても簡単なことと思いますが、どこがわからないのでしょうか??

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAコピーしたセルを順番に張り付ける方法

    おはようございます。 for文の処理方法がわからないので質問します。 やりたいこと 例・sheet2・sheet2・sheet4・・・と A~B列のセルに文字が有る場合 B列のセルに文字が有れば その行全体をコピーして 【貼り付け】シートに張り付けたいのですが 私の考えたコードだと コピーまではうまくできるのですが 【貼り付け】シートに行全体を張り付ける際 行を上書きされてしまいます。 (sheet2の行を張り付けたら 次にsheet3の行を貼り付けシートに上書きしてしまう) このような上書きをされずに すでに【貼り付け】シートにコピーされたものが有る場合 一つ下の行に貼り付けって出来ないでしょうか? コードを下記に記載します。 すいませんがコードを書いて頂けると助かります。 宜しくお願い致します。 追記:【貼り付け】シートは一番左端にあります。 Sub test() Dim b As Variant Dim i As Long Dim io As Integer Const  AAA  As String = "" Set b = Worksheets("貼り付け") For i = 1 To 100 For io = 2 To ThisWorkbook.Worksheets.Count If WorksheetFunction.CountIf(Worksheets(io).Rows(i), "") > 0 Then  Worksheets(io).Rows(i).Copy   b.Rows(i).Offset(1, 0).PasteSpecial (xlPasteAll)’ここの貼り付け方が間違ってますよね・・・ End If Next Next End Sub

  • VBA 4行毎にセルをコピペする方法をご教授お願いします><

    VBA 4行毎にセルをコピペする方法をご教授お願いします>< はじめましてVBA初心者です。 質問のマクロをForNext等で作成しましたが行毎にコピペする方法が導きませんでしたのでどなたかご教授のほどお願いします。 ■やりたいこと Sheet1のA1~A50のセル行をコピーし、Sheet4のA1を開始としてA1、A5、A9・・・と貼り付け Sheet2のA1~A50のセル行をコピーし、Sheet4のA2を開始としてA2、A6、A10・・・と貼り付け Sheet3のA1~A50のセル行をコピーし、Sheet4のA3を開始としてA3、A7、A11・・・と貼り付け を行いたい。 ■イメージ   Sheet1 Sheet2 Sheet3 Sheet4 A(列) A(列) A(列) A(列) 1 Name1 1 com1 1 Address1 1 Name1 2 Name2 2 com2 2 Address2 2 com1 3 Name3 3 com3 3 Address3 3 Address1 4 Name4 4 com4 4 Address4 4 Name2 5 Name5 5 com5 5 Address5 5 com2 6 Name6 6 com6 6 Address6 6 Address2 7 Name7 7 com7 7 Address7 7 Name3 8 Name8 8 com8 8 Address8 8 com3 9 Name9 9 com9 9 Address9 9 Address3 10 Name10 10 com10 10 Address10 : : : : : ■作成途中のマクロ Sub Sample() Dim rw1 As Integer 'Sheet1の変数 Dim rw2 As Integer 'Sheet2の変数 With Sheets("Sheet1") For rw1 = 1 To 50 Sheets("Sheet1").Cells(rw1, 1).Copy ???Sheets("Sheet2").Cells(rw1 * 4 , 1).PasteSpecial Paste:=xlPasteValues Next rw1 ForNextの組み合わせ+αで自動化できる方法があれば教えてください。 わかりづらい御説明で申し訳ございませんがお願い致します。

  • 文字列を検索しその列をコピーする(VBA)

    よろしくお願いします。 OS:WINDOWS 2000 PRO 環境:OFFICE 2003 エクセルのVBAについての質問です。 A列には数値コードが入っています。 そのコードは"1"と"2"に分類されてます。 マスターはSHEET1で、このマスターから コード1はSHEET2に、 コード2はSHEET3に 振り分けたいのですが、どうもうまくいきません・・・ A列にはコード"1" "2"以外に空白セルが存在します。 空白セルは無視したい。。。 それとこのデータはDBから抽出するのですが、 抽出したデータは規則性はありません。 抽出するごとに"1"と"2"と"空白"はランダムなので、 LOOP等のマクロを調べてやってみたのですが、出来なくて週末になってしまいました。 A列からコード1とコード2を検索して、 ヒットしたコードの行ごと各SHEETにコピーして、 なおかつ各シートA列の入力されていない一番下の セルにコピーしたいのですが、検索でヒットした 上から順番に。。。 これをLOOPと組合わせれば、各シートにコピーするのは 問題ないような気がします。。。 Sub AAA_BBB() .Copy Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0) End With End Sub LOOP等で上記の条件を満たせる方法はないでしょうか。 ご教示を、よろしくお願いします。

  • 複数シートのコピーペースト(+文字列の行削除)

    エクセルで、複数シートをまとめる作業をしているのですが、 幾つかの壁にあたりました。 1.複数シートのCD列コピー、FG列コピーし、他ブックのAB列に1列に貼り付けることができないでしょうか? 複数シートを選択し、クリップボードにコピーし、全て貼り付けをしますが、 1シート分しか貼り付けできません。 もしできるならついでに、シート1のCDシート1のFG続いてシート2のCD、シート2のFGといった、 順番にしたいと考えています。 2.A列に数字と文字があるが、文字の行を削除したい。   A(列)B(列)  コード 名前   1  あ   2  い   3  う  コード 名前   4  え   5  お   ・ ・ ・ ・ 上図で、コードの行を削除したいのです。 ほかに分からないことは、こちらで検索し、解決したんですが、これらは見つからなかったので、お願いします。

  • VBA 100行ごとに列を変更してコピーする。

    Winは7、Excelは2013を使用しています。 A列とB列のデータを100行毎に列を変えてコピーしたいと思っています。 (画像参照願います。) それで、別シートにコピペするサンプルコードを見つけたのですが、 同シート内でする様に変更する知識がなく、苦戦しています。 申し訳ありませんが、ご教示願います。 別シートにコピペするサンプルコード Sub データを100行ごとに分割する() Dim シート As Worksheet, 元 As Worksheet '元は元データのあるシート Dim 総行数 As Long, 回数 As Long, i As Long, 開始行 As Long Const コピー行 = 100 Set 元 = ActiveSheet '変数の元をActiveSheetにセットする 総行数 = 元.UsedRange.Rows.Count 回数 = Int(総行数 / コピー行) + IIf(総行数 Mod コピー行 > 0, 1, 0) 開始行 = 1 For i = 1 To 回数 Set シート = Sheets.Add シート.Name = 開始行 & "~" & 開始行 + コピー行 - 1 元.Rows(開始行 & ":" & 開始行 + コピー行 - 1).Copy シート.Range("A1") Columns("A:F").AutoFit 開始行 = 開始行 + コピー行 Next i End Sub

  • vbaで最終行に張り付け

    Excelマクロについて教えてください。 sheet2にsheet1から選択した範囲を貼り付けております sheet2のC列が連続した値になっておりそれを軸に貼り付けをしたいのです。 sheet1のA1:g40の範囲をcutしたものを sheet2のC列の最終入力行の一段下の行に A列から貼り付けしたいのです。 よろしくお願いします

  • Excel 任意の列の特定の行のみ値の取得

    書籍とサイトで教えていただいた説明などを見ながら、ExcelのVBAでセル内のデータの操作について勉強中ですが、タイトルのようなことをやる場合のオブジェクト式の選び方がわかりません。 よろしくお願いします。 例えば図のようなデータが入った"Sheet1"があり、行数、列数は様々なのですが、やりたいことは ・A列にエラーコード(ここでは"9999"または特定文字列)、空行、0が入っている行(ピンク色がついたセルのある行)は無視する。 ・任意の列がコピー元(ここでは「A列=コード」「B列=商品名」「E列=価格」で、上記に該当しないセルが対象 ・そのセルの値のみ取得し、"Sheet2"のA~C列に上から順に(上詰めで)「値」のみをはりつけたい Dim i As Long Worksheets("Sheet1").Select Rows(1).Copy Worksheets("Sheet2").Range("A1") For i = 2 To Range("A65536").End(xlUp).Row If Cells(i, "A") = 9999 And IsNumeric(Range("A" & i)) Then この記述ではこのデータ操作ではエラーを変えすのですが、 根本的な「任意の列の特定の行のみの値の取得(と他シートへの複写)」の概念がわかっていません。 正しく動作する記述において、なぜそのオブジェクト式を採用するのかも含めて教えていただければと思います。 よろしくお願いします。

  • VBA教えて下さい

    VBA初心者です やりたいこと 変数を宣言し 今開いているシート(activesheet)に for nextを使用し 列5~20を調べ 行3~5を指定し もし、5~20列の2行目のどれかに”No.8”という文字があれば(ここまでのコードは書けました) その当てはまる列の3~5行を選択し(1) 更に、(1)の下2列を選択する(2) そして、(1)と(2)を結合させる といったコードが書きたいです 考えたコード Sub test() Dim i As Long Dim j As Long With ActiveSheet For j = 5 To 20 For i = 3 To 5 If .Cells(j, 2) Like "*No.8*" Then 'ここからがわかりません End If Next i Next j End With End Sub 変な書き方なので例えを書きます A1セルにNo.8の文字があれば E1セルとF1セルを選択し 更に、E3セルとF3セルも選択し E1セルとF3まとめてセルを結合といったことがしたいです。 質問頂ければ追記しますm(ーー)m おそらくoffsetを使用して選択すると思うのですが上手く出来ませんでした 回答お願い致します

  • "VBAの繰り返し"についてお尋ねします。VBA初心者です。

    "VBAの繰り返し"についてお尋ねします。VBA初心者です。 例えば「A列の最後のセルに何か入れば、その行のB列、C列・・・の一つ上のセルに入っている計算式を繰り返しコピーする」と言うコードを教えていただけたらと思います。A列の最後のセルに何か入ってくれば、その行の一つ上のセルに入っている計算式を繰り返しコピーするというコードです。コード記述の例を教えていただけたらと思います。よろしくお願いします。

  • エクセルで列に入力した情報を行に移す方法

     MACでエクセルを使っています。列(横)に複数セル分入力した情報(数字)を指定した行(縦)に移動させたいと思っているのですが、一つ一つコピー→貼り付けする方法しかないのでしょうか。大量にあるのでどなたか効率のいい方法を教えて頂けないでしょうか。お返事お待ちしています。  例             (1)                      (2)  (1)(2)(3)→→→  (3)                               ※()はセルだと思って下さい。                        

専門家に質問してみよう