Excelマクロ(VBA)を使用してシート内の一部のセルを別シートにコピーする方法
- Excelのマクロ(VBA)を使用して、シート内の一部のセルを別シートにコピーする方法を教えてください。
- 具体的には、シートXの一部のセルを条件に基づいてシートYにコピーしたいです。
- コピー元の列数はシートYの「length」と書かれたセルの右隣の数字であり、コピー元の行数はシートXの1〜4行目です。ただし、シートXのA列が「x」の場合はコピーしないものとします。コピー先の列はコピー元の列と1つずれており、コピー先の行はシートYのA列で最初の空白セルの次からコピーを開始します。
- ベストアンサー
シート内の一部のセルを別シートにコピー
Excelのマクロ(VBA)の記載方法について お分かりになる箇所だけでも結構ですので、 どなたかご教授を願い致します。 シートX A B C 1 data1 data2 data3 2 x data7 data8 3 data4 data5 data6 4 data7 data8 data9 シート Y A B C D 1 length 3 (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz (任意) (任意) (任意) 4 (空白)(任意) (任意) (任意) 上記のような2つのシート(同一Excelファイル内)があって、 シートXの一部のセルを次の条件(1~4)でシートYにコピーしたい場合 1.コピー元の列の数は、シートYの "length"と書かれたセルの右となりの数字 とする(上記では3なので、A,B,C列をコピー対象) 2.コピー元の行の数は、シートXの1~4行目までとするが、 シートXのA列のセルが"x"だったら、その行は全てコピーしない。 3.コピー先(Y)の列は、コピー元(X)の列と一つずれてコピー(BならCに、CならDに) 4.コピー先(Y)の行は、シートYのA列で1行からで始めて空白セルになった行からコピー開始。 (上記では、A列で空白セルのある4行目からコピー) 上記条件で、下記のシートYを作成したいのですが、 この場合どようなマクロ(VBA)で実現できますでしょうか。 コピー結果(シートY) A B C D 1 length 3 (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz (任意) (任意) (任意) 4 (空白) data1 data2 data3 5 (任意) data4 data5 data6 6 (任意) data7 data8 data9
- mtsed
- お礼率92% (77/83)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以下のようなコードでどうでしょうか。 Sub データコピー() 列数 = Sheets("Y").Range("B1").Value 貼付行 = Sheets("Y").Range("A65536").End(xlUp).Row + 1 Sheets("X").Select j = 0 For i = 1 To 4 If Sheets("X").Cells(i, 1).Value <> "x" Then Sheets("X").Range(Cells(i, 1), Cells(i, 列数)).Copy Destination:=Sheets("Y").Cells(貼付行 + j, 2) j = j + 1 End If Next Sheets("Y").Select End Sub
関連するQ&A
- ExcelVBAで複数セルを別シートに貼り付けたい
Excel VBAでデータをコピーして、別シートに貼り付けるどうしたらいいのでしょうか。 Sheet1のセルA1からA4のデータをコピーして、Sheet2のC2からc5に貼り、次はSheet1のセルB1からB4のデータをコピーしてSheet2のC7からc10に貼りを500行ほど繰り返し(コピーするデータは、4行づつ横へ移動し、貼り付けるほうは4行づつ縦へ移動します。) それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します。 いろいろな方法を試しましたが、なかなかうまくいきません。 どなたか教えていただけませんでしょうか。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- excelで別シートのセルを選択(VBA)
どなたか教えてください。 シートXのB1に行番号 シートXのB2に列番号 が記載されていたとして、 別シート(Y)の、上記で指定したセルを選択する(フォーカスを移動する方法)を教えてください。 シート(X) A B C 1 行 25 2 列 2 シート(Y) A B C 1 2 ::::::: 24 25 (ここ) 以下のように書いても、最後の行でエラーになってしまいます。 行番号 = Sheets("X").Cells(1, 2).Value 列番号 = Sheets("X").Cells(2, 2).Value Sheets("Y").Select Range(Cells(行番号, 列番号)).Select
- ベストアンサー
- オフィス系ソフト
- VBA シート間の単一セルから結合セルへのコピー
マクロについてご教授をお願いします。 ◆実現したい事 2枚のシート(XとY)が存在します。 コピー元:Xシート コピー先:Yシート B列 B列 1行 商品1 コピペ→ 1~3行結合 商品1 2行 商品2 コピペ→ 4~5行結合 商品2 3行 商品3 コピペ→ 6~8行結合 商品3 ・ ・ ・ ・ ・ ・ 最終行 最終行 XシートのB列に1行ずつ、商品名が羅列されています。 YシートのB列には、3行結合(B1:B3)、(B4:B6)、(B7:B9)・・・空白セルがあります。 Xシートの商品名をYシートの結合セルにマクロを使って処理したいです。 ◆試した事 (1)結合を解除し、XからYへ範囲コピーしたが、YのB列に再び、商品毎に2行追加し、結合 2行追加する方法がわからず断念 (2).valueでXシートB1 = YシートB1を試みるができない ◆ここで詰まってます>< Dim X As Worksheet Dim Y As Worksheet Dim 最終行1 As Long Dim 最終行2 As Long Dim cp1 As Long・・・・Yシート行変数 Dim cp2 As Long・・・・Xシート行変数 Set X = Worksheets(1) Set Y = Worksheets(2) 最終行1 = Cells(Rows.Count, 2).End(xlDown).row 最終行2 = Cells(Rows.Count, 2).End(xlDown).row For cp1 = 1 To 最終行1 For cp2 = 1 To 最終行2 Step 3 sh1.Cells(cp1, 2).Copy Destination:= sh2.Cells(cp2, 2) Next Next みたいな感じにできればと、Copyを.valueなどにしてみたりと試してみましたが、 なかなかうまくいかず、3日くらい悩んでいます。 シンプルにやりたいのですが、なにか良い方法などあれば、 ご教授のほどお願い致します><
- ベストアンサー
- Visual Basic
- 別シートに任意のセルを転記する方法について
縦に6行ずつのデータがあり、これを横1行の別シートに転記する際に、 以前こちらで回答頂いた方法を応用したいと考えています。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))) アドバイスのとおり、上記の数式で見事に横にデータが転記できました。社員1人につき6行ずつのデータが縦にならんでおり、これを別の社員1人あたり1行で横に並んだデータにしたいというものでした。 1人目のデータは1行目を1列目に、2行目を2列目に・・・2人目のデータである7行目を1列目に、8行目を2列目に・・・3人目は13行目を1列目に・・・となります。 しかし、順次並べるのではなく、転記の必要にないデータを含むシートの任意のセルを選び、別シートの任意のセルへ転記する必要が生じたため、悩んで路頭に迷っております。。。 例えば、6行ずつのデータのうち、いつも3行目を別シートの5列目に。4行目は転記せずに、5行目を6列目に。また、6行目を7列目に転記せずに10列目に転記する。(8・9列目は、別データを入力するため空白にしたい) そして、社員2人目である7行目からは、上記と同じ規則で転記したい。 などというように、選んで転記する方法は何かありますでしょうか?? =INDEX(Sheet1!$Z:$Z,(ROW(B2)-ROW($B$2))*6+IF(COLUMN()=4,MOD(COLUMN(B2)-1,6)+1,MOD(COLUMN(B2)-1,7))) のようにしても上手くいきません。 何卒宜しく御願いいたします。
- ベストアンサー
- Windows XP
- Excel データの一部を別シートにコピー
Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。
- ベストアンサー
- オフィス系ソフト
- セル内の2行をそれぞれ別のセルにコピーするマクロ
A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。
- ベストアンサー
- オフィス系ソフト
- VBA 他シートを参照しているセルのコピー
お世話になります。 以下のシートがあります。 [sheet a] A B C D E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- イベントマクロでコピー
ダブルクリックイベントでシート1のデータをシート2にコピーです。シート1には、A列とB列にデータが有ります。 シート2の C3,C5,C8,C10,・・・・と D2,D4,C7,D9,・・・・とコピー先が有ります。シート1のA列の任意の行をダブルクリックでC3にコピー、次、シート1のB列の任意の行をダブルクリックでD2にコピー。次、シート1のA列の任意の行をダブルクリックでC5にコピー、次、シート1のB列の任意の行をダブルクリックでD4にコピー、とするにはどのように記述したら良いでしょうか。よろしくお願いします。
- ベストアンサー
- Visual Basic
- 簡単なセルのコピー方法を教えて下さい。
お世話になります。Office2003を使用しております。 エクセルで甲のシートのA列に、乙のシートのA行のセルの データを7列おきにコピーしたいのですが、簡単な方法があれば 教えて頂けないでしょうか。 A1 B1 C1 D1 1 → 1 8 15 22 2 3 4 5 6 7 ・ ・ 100
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA マクロ 別シートの空白行へのコピー
すみません、、いくらやってもできません。どなたかわかるかた助けてください。 <質問内容> エクセルのsheet1、Sheet2があり、 Sheet2にあるデータをSheet1のA列の空白行に貼り付けするというマクロを組みたいです。 BVAを使って、Sheet1の任意のデータ(データが入っているところのみ)をコピーすることまではできましたが、Sheet2へのA列空白行へペーストができないでいます。 ※Sheet2は別会社で作成のため、シート保護されていますが、貼り付けたい場所はロックされていません。 保護されているがゆえにCtr+Gのセル選択は使用できない状態です。 すみませんが、明日までになんとかお願いいたします!明日中に作成、上司に渡す予定です。
- ベストアンサー
- その他MS Office製品
お礼
出来ました! ありがとうございます。