• ベストアンサー

〔EXCEL VBA〕で「第1のシート」のデータを「第2のシート」に転

〔EXCEL VBA〕で「第1のシート」のデータを「第2のシート」に転記する方法 EXCEL2003でデータが480行/65列ある第1のシート(データベース的)があります。 第1のシートの列にデータが入力されている場合のみ、第2シートの指定されたセルに検索した列の 表題と検索したデータを結合して転記したいのですが良い方法が分りません。 その際、各行毎に検索し空白列は第2のシ-トに転記せず左詰めにして転記したいのですが・・・・ 初心者に合せたご教示をお願いします。 また、Excel VBAの短期マスター法が御座いましたら合せて教示願います。 以上、宜しくお願い致します。

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

  • ベストアンサー
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.2

こんにちは。  あまり綺麗ではありませんが、作ってみました。  以下のSub Main()からEnd Subまでを新規モジュール挿入後、貼りつけて実行してください。  なお、第一シートが"元データ"、第二シートが"集計表"というシート名にしています。  データの行数、列数などが固定になっているので、Curentregionなどを使って可変に対応できるようにしたほうが良いでしょう。 Sub Main() Dim rwIndex, colIndex, colIndex2 For rwIndex = 1 To 5 '集計表の列番号を初期化する。 colIndex2 = 1 For colIndex = 1 To 11 With Worksheets("元データ").Cells(rwIndex, colIndex) '1行目か1列目、2列目の場合、コピーする。 If rwIndex = 1 Or colIndex = 1 Or colIndex = 2 Then Worksheets("集計表").Cells(rwIndex, colIndex2).Value = .Value '集計表の列番号を増加する。 colIndex2 = colIndex2 + 1 'その他はデータがある場合だけ、表題(1列目)を結合してコピーする ElseIf .Value > 0 Then Worksheets("集計表").Cells(rwIndex, colIndex2).Value = Worksheets("元データ").Cells(1, colIndex).Value & "V/" & .Value & "A" '集計表の列番号を増加する。 colIndex2 = colIndex2 + 1 End If End With Next colIndex Next rwIndex End Sub では。

iiji4547
質問者

お礼

早速のアドバイス有難う御座いました。 解り易くて助かりました。 夏休み等もあり御礼が遅れました事をお詫び致します。 引き続きVBAの勉強を進めたいと思います。 以上

その他の回答 (1)

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  扱うデータのイメージが分かりづらいので、サンプルのデータを例示して説明したほうが回答が付きやすいと思います。 では。

iiji4547
質問者

お礼

有難うございます。 ご教示のお陰で製品リスト(集計表)が完成しました。 修正部分で若干手こずりましたが、反面勉強になりました。 今後もVBAをマスター出来るように頑張りたいと思います。 また、御指導頂ければ幸いです。 取り急ぎ、御礼まで。

iiji4547
質問者

補足

説明不足で失礼しました。結論的には下記の通りです。 サンプルとしては、第1シートを第2シートの様に纏めたい。(列のズレは、ご容赦下さい)  第1シート    A    B   C   D   E   F    G    H    I   J   K     1 名称  製品名  5   6    7   8    9   12   15   24  48 2 aa   あ   10                 1       5   3 bb   い       3                   1  4 cc   う    8   2               2       8 5 dd   え    4    第2シ-ト    A    B    C    D     E  F    G    H   I   J    1 名称  製品名   ch1   ch2    ch3   ch4   ch5  ch6 2 aa   あ   5V/10A  12V/1A  24V/5A 3 bb   い   6V/3A   15V/1A 4 cc   う   5V/8A   6V/2A  12V/2A 24V/8A 5 dd   え   5V/4A

関連するQ&A

  • 既存シートにデータ追加したい

    ■マスターシート 日付 商品 個数 付加データ ↓ (項目列ごとに下記追加されていきます) (付加データだけは月末に一括手入力) ↓ ■納品書TMPシート ■日付名シート納品書(印刷用) --------------------------- 現在、マスターシートから、納品書TMPシートを使い、 同ブック内に日付名シートの納品書(付加データ除く)をVBAで作成しています つまり、付加データだけが入力されてない納品書が日付名シートで作成されます 月末の処理都合上、マスターシートへ付加データ一括入力して 既に作成されている各日付名シートに追加転記させたいのです マスターデータの項目日付と日付名シートが一致の場合、 その日付の付加データを抽出し、該当の納品書へ転記する 関数VLOOKUPなどで、各納品書に表示はできるのですが、 都合上月初にマスターデータをクリアしなければならず、 そうした場合、表示エラーになるので、転記データを残す方法を VBAで考えています。 For文などで固定日付でのシート抽出は何とか出来るのですが、 さらにマスターシートの日付も動くので?入れ子?ループ?悩んでいます どなたか助けて下さい

  • 他シートのデータを参照させたい(excel2007

    excel2007において、他のシートのデータを参照させる方法についてどなたか教えてください。 =sheet1!a1 のように入力して他のシートのデータを表示させる方法は使っているのですが、複数のセルのデータを参照させるのに手間取っています。 たとえばsheet1にある5行5列(25セル)のデータをsheet2の5行5列(25セル)に表示させたいときは、25個のセルすべてに上記のように入力すればいいのですが、参照させたい元の25セルのどこかにセルの結合が使われていると、sheet2においても同じように結合させなければsheet1と同じ表示になりません。 sheet1でセルの結合が使われたときはsheet2においても同じように「セルの結合も自動で参照させる(連動させる)」ということは可能なのでしょうか? 詳しい方いらっしゃいましたら、よろしくお願いいたします。

  • マクロ:他シートにデータをコピーしたい

    Excelのマクロについてです。 シート1にデータが有り、その中のB列に「済」と記入されている行のみ シート2にコピーして転記したいのです。 これだけなら簡単なのですが データ内には複数行にまたがってのセル結合がされてあったり 図形描写やテキストボックス等も混ざってあります。 それらもまとめてコピーしたいのですが、マクロで何とかなるのでしょうか?

  • 【Excel VBA】条件に合うデータの転記

    Excel2003を使用しています。 2つのシート間の特定の範囲内で、条件に合うデータを転記したいのですが… Sheet1(A1:C41) ← 一定範囲 Sheet2(選択範囲) ← 都度、選択範囲取得 Sheet2の選択範囲内で、A列とB列の値が、Sheet1のA列とB列のそれぞれの値と一致した場合、Sheet1のC列の値をSheet2のE列に転記したいのですが、こういう場合、コードはどのように書いたらいいでしょうか? 条件に合ったものを順に転記していくコードは書いたことがあるのですが、特定の範囲内ということや、転記する場所が指定されたりしていて、つまづいています。 よろしくお願いします。

  • VBAとデータの転記について

    今エクセル2003で、以下の上段画像のようなエクセルデータを作成しました。 上段(シート1)が、各商品に対する評価表なのですが、 そこに評価のあった件数が入力されています。 今、シート1の商品名から評価の不可までを、 VBAでシート2に以下のように転記をしたいのです。 先月はたまたま26件だったのですが、 毎月の商品の件数が、決まっていないので、連番記載とセルごとの処理 ループの使い方がよくわかりません。 評価欄は1件でも件数があれば、○印を転記して、空白はそのままで 転記したいのです。 データが多くなるにつれ手作業が大変になってきました。 VBAがまったくわからず、申し訳ありませんが よろしくお願いします。

  • データの検索(EXCEL2000)

    おじゃま致します。 シ-ト内のデータの検索をしたいのですが、 [編集]-[検索]でするような検索を以下のように シート内だけで行うにはどうしたらよいでしょうか? シート内のセルA1に検索したいデータを入力したら、 該当データのセルにジャンプさせたいのです。 セル、オブジェクトへマクロ登録はなんとかできますが マクロ自体の作成スキルがありませんので、 どなたか、マクロの作成をお願いできないでしょうか。 また、マクロ以外でできるならアイデアをお願いします。

  • <ACCESS VBA -> EXCEL>getObjectしたEXCELファイルのシートを指定したい

    ACCESSのVBAマクロでEXCELファイルを指定してデータを取得しようとしています。 GetObject("C:\ファイル名.xls", "Excel.Sheet") でEXCELファイルを取得するまでは良いのですが、そのファイルのシートを指定する方法がわかりません。 基本かもしれませんが、ご教示をお願いします。

  • 【VBA】別シートを検索して該当があれば『●』表示

    VBA初心者(独学中…)です。 別シートからVLOOKUPの要領でデータの抜き出しをしたいです。 関数を試しましたが、データ量が多く、かなり時間が掛かってしまうため、 できればマクロで完了させたいと思っています。 ご教示のほど、何卒よろしくお願いいたします。 ------------------------  帳票の仕様 ------------------------ ■Excel2010 にて  ・Sheet1~9のJ列に『検索コード』があります。  ・Sheet10は【コードマスタ】シートです。  ・行はシートにより増減あり。  ・列はSheet1~9で共通、項目・並び等 変更なし。     Sheet10も項目・並びは変更しません。 ------------------------  やりたいこと ------------------------ Sheet10からSheet1~9へ、VLOOKUPのように該当データを抽出・転記したい。 ------------------------  具体的には… ------------------------ Sheet1~9の『検索コード(J列 ※データは[セル:J2]以下~)』を元に、  (1)Sheet10のA列を検索 ⇒ 該当があればSheet1~9のK列へ  (2)Sheet10のB列を検索 ⇒ 該当があればSheet1~9のL列へ 『●』が表示されるようにしたい。 ------------------------------------------------------------------------ 試しに(1)の動作テスト用に、以下を書いてみましたがうまく動作しませんでした。 (★の部分がエラーになります) 正しく動作させるには、どのようにしたらよろしいでしょうか。 (実際のコードを教えていただけますと、大変有難いです…) ================================================================ Sub コードマスタからK列値をVLookup() Dim tbl As Range Set tbl = Worksheets(10).Range("A:B") Dim key As Long key = Range("J2").Value        ★ On Error Resume Next Dim ret As String ret = WorksheetFunction.VLookup(key, tbl, 1, False) On Error GoTo 0 Range("K:K").Value = ret End Sub ================================================================

  • 違うExcelシートのデータのコピー方法

    こんにちは。 初めて投稿致します。 Excelのシート1(B行)のデータを違うシート2(B,C,D行)に結合して貼り付けようとすると。 シート1(B行)のデータがシート2の(B,C,D行)←(3行にまたがる)が起きてしまい、手動でシート2の(B,C,D行)の結合を行っております。 どなたか、もっと簡単にExcelのシート1(B行)のデータを違うシート2(B,C,D行)に結合する方法を教えて頂けないでしょうか。 宜しくお願い致します

  • EXCEL VBA テーブル間のコピー

    お世話になります。 VBA初心者です。 Excelで、元データであるSheet1にあるテーブルのB列をSheet2にあるテーブルのA列に転記したいと思います。このとき、Sheet2のテーブルにはデータが入っており、そのデータと重複するものを除外したものだけをSheet2テーブルの続きから入力させるにはどうしたらよいでしょうか? なにとぞご教授のほど、お願いいたします。