• 締切済み

指定した数だけデータをコピペする方法

VBAの参考例を教えてください。 <シート1> A列に1から順に数字が入力されており、B列からE列まで数値のデータが入力されています。F列にはB列からE列にデータが入力されているセルの数をカウントした関数が入力されています。 <シート2> シート1のB~Eに入力されたデータが縦に入れ替えの上A列にコピぺされています。 ここで、シート1のA列の数値をコピーし、シート1F列に示されたデータ数分だけ、シート2のF列に縦に順々にペーストしていく方法をご教示ください。シート1のA列に入力された数値が最後の行にくるまでこれを繰り返します。 シート1 A B C D E F 1  a b c d 4 2  e d f   3 3  d e     2 ・ ・ ・ シート2 A B C D E F a         1 b         1 c         1 d         1 e         2 d         2 f          2 d         3 e         3 当方、VBAは全くの初心者です。急遽仕事で必要になってしまい、質問しました。 どうぞよろしくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

Sheet2のF列だけの処理でいいの? Sub Sample()   Dim nRow As Long   Dim nCount As Long   Dim i   nRow = 1   With Worksheets("Sheet1")     For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row       nCount = .Cells(i, 6).Value       Sheets("Sheet2").Range(Cells(nRow, 6), Cells(nRow + nCount, 6)) = .Cells(i, 1).Value       nRow = nRow + nCount     Next i   End With End Sub

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

誰も回答しないのは、質問の表現がややこしいからではないか。 >B列からE列まで数値のデータが入力 例では文字列になっているのでは。混乱のもと。 >指定した数だけデータをコピペする方法 標題として、実際にプログラム処理で必要なことを反映してない。 やりたいことを説明しとくとか。「表の組み換え」の問題だ。 ーー シート2は出来てほしい結果だよね B列からE列のの範囲で、セルを1つづと調べシート2のA列セルに転記 その際シート1での行番号(または行番号ー1かA列数字)をシート2のF列に入れる。 シート1で空白セルに出あわせば、スキップ。 こういうロジックを考える訓練をしないと。 たまたま、これに適当なFoe Each Nextのくり返しがあることも、日頃勉強してナイト思いつかないだろうが。 標準モジュールに Sub test02() Dim sh1, sh2 Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") d = sh1.Range("A65536").End(xlUp).Row rm = 1: k = 2 For Each cl In sh1.Range("B2:E" & d) If cl <> "" Then sh2.Cells(k, "A") = cl sh2.Cells(k, "F") = cl.Row-1 k = k + 1 m = cl.Row End If Next End Sub cl.Row-1のところは字再の情況にあわせて。 結果 Sheet2 A列                        F列12 1 18 1 23 1 56 1 22 2 6 2 5 2 25 3 2 3

関連するQ&A

  • 項目別に合計数入力

    シート1の表-1にA~C列に文字とD,E列に数値が入力されておりシート2の表-2にA,B,C列の文字が同一行であれば1行とし違えば行を追加し同一行はD,E列の数値を加算していきたいのですがどなたかVBAコードか関数の解る方宜しくお願いします。

  • EXCELのデータベース利用について(VBA)

    VBA初心者の者です。 下記の様なEXCELファイルを作りたいのですが、どのようにすれば良いのか まったくわかりません。 ACCESSでの構築が簡単なのかもしれませんが、データ量がそれほど多くないことと 職場にACCESSがないため、可能であればEXCELで構築したいと考えています。 私自身、プログラムの知識がなく、EXCEL VBAのサイトを確認するのですが、いまいち どうすれば良いのかわかりません。 ぜひご教授の程よろしくお願いします。 3つのシートの構成は以下になります。 【入力シート】 A1セルに文字列(A~Z)入力欄 【○○データシート】 A列に A~Z の文字列 B列に 001~100までの数値 C列に 001~100までの数値 D列に 001~100までの数値 E列に 001~100までの数値 例)    A列   B列   C列   D列   E列 1   A   001 2   B   001    002    003   004 3   C   003 4   D   002    003 【▽コマンドシート】 A列に 001~100までの一意の数字 B列に 文字列(コマンド) C列に 文字列(コマンド詳細) 例)    A列    B列    C列 1   001   xx     blank 2   002   xxx△   xxx 3   003   xxxx    x○ 4   004   xxxxx   xxx 【欲しいVBA】 1、入力シートのA1セルに○○データシートのA列に該当するA~Zの 文字列を入力。 2、○○データシートのB列~F列までの数値を参照 3、2の数値において▽コマンドシートのA列に記載ある番号と紐づけを行い、 ▽コマンドシートのB列、C列に記載がある文字列を入力シートのB列、C列にコピー ※コピー時は▽コマンドシートの書式や体裁情報も含めてコピー。 例としては以下になります。 入力シートの A1セルにDを入力した場合は 入力シート    A列    B列    C列 1   D    xxx△  xxx 2        xxxx    x○ 3 以上、ご教授よろしくお願いします。

  • Excel VBA : 追加でコピペする方法

    ExcelのVBAでマクロを作成したので教えて下さい。 sheet(1)C3からC列にDATAが入力済みです。 (同じく、D3からD列にもC列と同じ行数DATAが入力済みです。) DATAは、途中で空白セルは無く、全て埋められた状態です。 (つまり、C列とD列の使用されている行数は全く同じです。) それぞれのDATA(C列、D列)をコピーして Sheet(2)のB3(B列)とC3(C列)から下方にペーストするのですが、 Sheet(2)のB列とC列には既に旧DATAが入力済みなので 旧DATAは消去せず下側に追加する形式でコピペしたいのです。 (旧DATAの直下の行に新規にDATAを追加) 利用済みの行数を取得してコピーは下記で良さそうですが ?   Cells(3,3).end(xlDown).Row.copy 書き込み(ペース)で思考が停止状態です。 どのようにすれば良いでしょうか ?

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • 【Excel】該当データ表示方法について

    Excelの表で、(A)列にデータ名、(B)列にデータ値が入力されているとして、 1.(C)列に(B)列のデータ値の種類を昇順で表示、 2.(D)列に(C)列のデータ値を持つ(A)列の文字を表示、 3.(E)列に(D)列のデータ種類の数を表示 という3つの内容を実現したいのですが、(1つでも) ご存知の方、教えて下さい。よろしくお願いしますm(__)m 【イメージ】   | (A) (B) (C)  (D)   (E) ――――――――――――――――――― (1)| A 10 10 A、D、E   3 (2)| B 20 20 B、G    2 (3)| C 30 30 C、F    2 (4)| D 10 (5)| E 10 (6)| F 30 (7)| G 20

  • データ抽出方法

    おはようございます。 sheet1 B列、C列に重複してるデータと、そうでないデータが混在して沢山あります。 sheet2 B列、C列に一点一様の型でデータを抽出したいご伝授下さい sheet1 B列、C列 A-1-1 A A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-1 B C-2-3 C sheet2 B列、C列(抽出結果) A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-3 C

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • 指定した3つのセルのデータを抽出し別表を作成する

    A表(A~F列、1~7行)のうちB、D、F列にデータが入力表示されたデータを抽出して別のB表(A,B,C列、1~7行)を作成するためのエクセル関数をご教授下さい。下図のとおり、F列は同じデータですのでVLOOK関数で表示できるのですが、B,D列にデータが入力されていない場合は、表示しないようにしたいのです。よろしくお願いします。 また、3つのうち一つでもデータがない場合は、表示させない方法でも結構ですよろしくお願いします。 [A表]    A    B    C    D    E   F 1  5    8     9    12    2   ○ 2  4                       ○ 3       7          10       ○   4                          ○ 5  3    4     10    5       ○ 6                          ○ 7                          × [B表]    A    B     C 1  8    12    ○ 2  7    10    ○ 3  4     5    ○ 4 5 6 7

  • Excel 空白セルのコピペについて

    http://imgur.com/5e8TsP1 上記図のように、シート1のB列に各文字を入力しています。 そして、A列にはもしB列に文字が入力されていたらID代わりの数値を表示する、という式を入力してあります。 次に、シート1のA列、B列をコピーして、シート2に数値としてペーストをします。 すると、A列は空白のはずが、xldown操作をすると元のセルで式が入力されていたものまで選んでしまい、真の空白セルとして認識してくれません。 そこで、このような例の場合、どうコピーペースト、または選択をすれば偽物の空白 セルを生み出さないように出来るでしょうか? 実際に使用するデータは項目名が多く存在し、マクロですべてのセルを選択→新規ブックを作成してそこにペースト、という処理を行っています。 この時に偽物の空白セルが出ると、データベースに読みこむ際に不都合が生じますので、何とか改善を図りたいです。 VBA、関数、Excel上のテクニックのいずれでも構いませんので、どうかご教授下さい。 よろしくお願いいたします。

  • Excel関数です。指定のセルから、n番目おきに数値を表示する方法につ

    Excel関数です。指定のセルから、n番目おきに数値を表示する方法につきまして。 Sheer1に元となる表   A    B    C    D 1 番号 開始年 周期 金額 2  1  2000    4   100 3  2  2005    3   200 4  3  2001    5   300 5  4  2004    2   400 ・ ・ Sheet2に反映させる表     A     B    C    D    E    F    G 1  番号  2000  2001  2002  2003  2004  2005  (←こちらの数値はyyyyで表した年です) 2  1 3  5 4  3 5  1 Sheet2 A列に任意の Sheet1 A列の番号を入力すると、 Sheet2 B2以降に Sheet1表の対応する年度から、 C列で指定した周期ごとにD列の金額が反映されるような表を作成したいと考えています。 例えば、Sheet1元表の「4」をSheet2 A列に入力すると、 2000年から2003年までは 0 2004年に 400 2005年に  0 以降、2年おきに400を表示。 無理やりE1からn年目(n番目)という項目を設け、開始年を考えずに E2 =IF((ROUND(E1/$C$2,0)-E1/$C$2)=0,1*$D$2,0)と Sheet1に作成は出来たのですが、  A   B    C   D   E   F ・・・・・ 1番号 開始年 周期 金額   1   2   3   4   5  6 2 1 2000  4   100 3 2 2005  3   200 4 3 2001  5   300 5 4 2004  2   400 ・ ・ 開始年度から、別シートでとなると どのように計算させて良いのかわかりません。 分かり難い質問で申し訳ございませんが、どうぞよろしくお願いします。

専門家に質問してみよう