• ベストアンサー

VBAでExcelデータの加工方法について

Excel VBAにて、データ加工するプログラムをご教授ください。 環境はWindows7 Pro Excel2010 添付データのsheet1をsheet2の状態にするロジックです。 ・sheet1、sheet2は別シート ・sheet1の列は最終行までという形 何行あるかは不明で連続したデータが入っている。

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

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

こんにちは。 ややベタですが、VBA的にはよく使われる基本テクに則した書き方です。 Sub Re8953225() Dim wks2 As Worksheet Dim sClass As String Dim nRow As Long, nCol As Long, i As Long   Set wks2 = Sheets("Sheet2")   With Sheets("Sheet1")     nRow = 0     sClass = ""     For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row       If .Cells(i, "B") <> sClass Then         sClass = .Cells(i, "B")         nRow = nRow + 1         wks2.Cells(nRow, 1) = .Cells(i, "B")         nCol = 1       End If       nCol = nCol + 1       wks2.Cells(nRow, nCol) = .Cells(i, "A")     Next i   End With End Sub

関連するQ&A

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

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

  • Excel 任意の行数・列数のデータを合体VBA

    VBAで、Sheet1のデータの最終行に Sheet2の同じ並びのデータを続けてくっつけ、 Sheet3に(Sheet1とSheet2のデータが)連続した状態をつくる場合のVBAの書き方を教えてください。 ちょうどSheet1のブルーの範囲(ただし最終行はn行=データは様々で最終行は不特定だが最終行の下にはもうデータはない、最終m列の右にはまだデータが膨大にあるが、今回はA~m列(ここではA~AX列と指定可能)をコピーしたい) に Sheet2の黄色い範囲(ただし最終行はn行=データそれぞれで不特定だが最終行の下にはもうデータはない、最終m列はSheet1と同じ構成=A~AX列) をくっつけたい。 ・アウトプットはSheet3。 (Sheet1とSheet2はいじらずそのまま残す) ・コピーして貼り付ける(複写する)のは、値だけ (罫線とか計算式は不要) です。 よろしくお願いします。

  • EXCEL2007 VBA 印刷タイトルには、連続した行全体または列全

    EXCEL2007 VBA 印刷タイトルには、連続した行全体または列全体を指定してください。 OS:windowsXP SP3 開発したエクセル:EXCEL2003 実行したエクセル:EXCEL2007 ファイルは2003形式で保存しています。 VBA付のEXCELマクロを起動すると、データを加工して、新しいブックにはきだします。 VBAのコードの中で、シートの印刷タイトルを設定しています。 Set s2 = Workbooks("ブック名").Sheets(”シート名”) ・ ・ ・ s2.PageSetup.PrintTitleRows = s2.Rows(1).Address & ":" & s2.Rows(4).Address こんな感じです。 excel2003では、何の問題もないのですが、excel2007で実行すると、エラーにはならないものの、作成したEXCELをプレビューすると、 印刷タイトルには、連続した行全体または列全体を指定してください。 というエラーが出て、プレビューできません。 作成したファイルの印刷設定は空欄になっていました。 With s2.PageSetup .PrintTitleRows = "$1:4$" .PrintTitleColumns = "" End With このソースもダメでした。 VBAのコードがNGならと、編集するシートにあらかじめ印刷設定を行ってみましたが、新しいブックにコピーした時点?でダメなようです。 どなたか、この問題を解決してください! 宜しくお願いします。

  • Excel2013にしたらVBAがすごく重くなった

    会社のPCがExcel2010からExcel2013に変更されたのですが、Excel2010の環境で作成していたVBAマクロの処理がもの凄く遅くなってしまいました。 Excel2010では10秒ほど待てば終わった処理が30分以上かかるようになってしまい、業務効率を上げるために作ったVBAが逆に非効率になってしまい困っております。 (フリーズしたような感じになりますが、長時間までは処理は終わり、エラーは出ておりません) Excel2013で重くなった箇所を調べていたら、下記コード部分の繰返し処理で重くなっているのが分かりました。 処理の概要は、「全体」シートの指定列の最終行のセルから指定された番号(12345)があるか1行ずつ調べていき、ヒットしたらその行を全体を切取り、「●●」シートの最終行に貼り付けていく単純なものです。 「全体」シート行数は8000~10000行あります。 ・重くなっている処理の箇所 ================================== Application.ScreenUpdating = False ActiveWorkbook.Worksheets("全体").Activate LastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To LastRow If Cells(i, 5).Value Like "12345" Then Rows(i).Cut Sheets("●●").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If Next i ================================== Excel2010で問題のなかった処理がExcel2013になって途端に重くなった原因自体も分かりませんが、問題点の回避方法や処理速度を改善する方法はありませんでしょうか。 よろしくお願いいたします。

  • データコピー貼り付けの仕方

    excel2010を使っています、VBA勉強中の初心者です教えてください。 随時データ量の変化するsheet1があります。 sheet1 A2からデータの入ってる最終行、R列までをコピーし、 sheet2 A列:R列まで、最終行に貼り付けをしたいのでご教授ください sheet1, sheet2ともに行1にタイトルがあります

  • 【VBA】複数シートから抜き出したデータを集約

    【Excel2010】の  ●同一ブック内で、  ●sheet1~9の同一列から、  ●sheet10の任意列へ、  ●データを抜き出して、続けて表示させたい と思っています。 手動オートフィルタや、関数で試しましたが、 作業のたびにかなりの手間になります。 願わくばVBAマクロで対応できればと思っているのですが、 知識不足のため、うまくできませんでした。 具体的な画面も添付させていただきます。 ご教示いただきたく、よろしくお願いいたします。 <補足> sheet1~9のデータ行範囲は作業ごと・シートごとに変わります。 (データ列は固定です)

  • 【Excel VBA】条件を満たすデータを順に抽出

    Excel2003を使用しています。 CSVでExcelに取り込んだデータの中から、条件を満たすものを順に抽出して一覧表を作成するマクロを作りたいのですが。。。 ・Sheet2のB列に“コード”と入力されている行のC列のデータ → Sheet1のC列2行目以下 ・Sheet2のC列に“合計”と入力されている行のD列のデータ → Sheet1のD列2行目以下 に順に表示させたいのですが、うまくいきません。 以前、いただいた回答で参考になりそうなものを見てみたのですが、手順というか何かヒントのようなものをいただけたら、自分でどうにかできそうなので、質問させていただきました。 よろしくお願いします。

  • Excel Vba でデータの範囲を知るには?

    Excelを使用していますが、マクロ(VBA)で、シートのデータの範囲を知るにはどうすればよいのでしょうか。  印刷プレビューを行うと、自動的にページ数が求めらていますが、これは、シートのデータの範囲(列及び行の最大値)を判別しているからできるのだと思います。  これを、VBAで行、及び列のMAX値を取得したいのですが、そのメソッド(プロパティ)を知りたいのです。  どなたかご教授ください。

  • Excel2016で文字列の一括置換を行うVBA

    Excel中級者です。Windows10, Excel2016で、別の「マスタ」シートにある表に従い、「Data」シートにある文字列を一括置換するVBAを教えていただけますと幸いです。マスタ表は2列 100行で1列目に置換前の語、2列目に置換後の語があります。dataシートは1顧客1行で、20列に商品名が入っており、同シートで一括置換を実行したく存じます。どうぞよろしくお願い申し上げます。

  • エクセル(EXCEL)VBAで行自動分割

    エクセル(EXCEL)VBAの質問です。数万行にわたって入力されているデータがありますが、これを1000行づつに分割して、別々の新規BOOK(またはSHEET)へコピーしていきたいのですが、これを実現するVBAを教えていただけ ないでしょうか? VBAマスターの諸兄方、どうぞ宜しくお願い致します。

専門家に質問してみよう