• 締切済み
  • 困ってます

必要なデータを抽出したい

必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。

noname#121028

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数296
  • ありがとう数0

みんなの回答

  • 回答No.5
  • mu2011
  • ベストアンサー率38% (1910/4994)

NO3です。 B列以降も検索コードがある事を失念していましたので訂正します。 <サンプルコード> Sub シート1を検索して結果をシート2() Dim key As Integer key = InputBox("抽出コードを入力して下さい。", "抽出コードの入力") b = 1 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 2 To Cells(i, Columns.Count).End(xlToLeft).Column If Cells(i, k) = key Then Sheet1.Rows(i).Copy Destination:=Sheet2.Rows(b) b = b + 1 Exit For End If Next Next End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Excelをデータベースのように使用した場合 データの抽出

    Excelをデータベースのようにして使用している場合について教えて欲しいことがあります。  ・Sheetを2つ作成したとします。  ・Sheet1はたくさんのデータが入っているシートです。  ・Sheet1の名前を仮に『Data』とします。  ・Sheet2はSheet1から必要なデータを抽出してきて並べるシートです。  ・Sheet2の名前を仮に『Report』とします。  ・『Data』のA列には1~200までの数字が入力されています。  ・その数字は ランダムである上に 重複していることもあります。  ・例えばA1には「1」が入力されていて A2には「2」が入力されています。  ・しかし その後A3にもA4にもA5にも「2」が入力されています。  ・同様にA6~A15までは「3」が入力されているのです。  ・このようにA列の数字は 同じ数字が何度も重複しており その重複には規則性はありません。  ・『Report』シート上で『Data』シートからデータを抽出したいのですが A列に「1」と入力されているデータだけを取り出すのなら「VLOOKUP」でもできますよね・・・・  ・しかし A列に「2」と入力されているデータを「VLOOKUP」関数で選んでも その先頭行のデータしか読み込んできません。  ・『Data』シートのA列に入力している数字から 必要な数字が入力されている行のデータだけを 全て『Report』シートに並べようとした場合 手作業で行うとすると・・・ 『Data』でA列が「1」のデータだけを選び,それを『Report』シートに貼り付ける。次は「2」で実行する。・・・・・という作業を200回繰り返すことになりますが 簡単に行うにはどのようにすればいいのでしょうか? マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすく教えていただきたいのですが・・・ 勝手なお願いで申し訳ありませんが よろしくお願いします。

  • エクセル 大量のデータから抽出し自動表示

    エクセルのSheet1のC列に大量(3500件くらい)のデータがあります。このデータは毎日さらに増えます。D列にもおなじだけのデータがあります。 (E列・F列にはあとから別のデータをさらに入力していきます。) Sheet1 A B C D E F     1 2 3 4     2 3 4 5      1 3 5 6     3 5      2 4      ・ ・     ・ ・ こんな感じです。 今回、このC列に入っているデータを検索し、完全に一致したデータのみを別シートに抽出したいのです。 C列にはいろいろな数字が入っていて、同じものもありますが、D列にも同じ数字とは限りません。 なので、VLOOKUPは使用できないのかと思っています。 一致したデータはその行をすべて別シートに抽出したいです。 検索をかけて一致しないデータがあった場合もその検索した数字は残しておいてさらに今後一致になるまでデータを残しておくという方法はできますでしょうか。 エクセルは2003です。 よろしくお願いします。

  • 連日となっているセルを抽出するには?

    翌日の日付を抽出する方法があれば、教えていただけますでしょうか。 A列に、数字3ケタが並んでいます。 この数字が同一の行=(A1~C3)のデータの中から C列とB列の日付が翌日になっている行を探し出したいです。 下記の場合は、 C1(13/12/31)とB2(2014/1/1)が連日、翌日となっている。 C2(2014/12/31)とB3(2015/1/1)が連日、翌日となっている。 上記の場合、連日となっている「4つのセル」を全て絞り出したいです。    A  B   C 1  123  2013/1/1 2013/12/31 2  123  2014/1/1 2014/12/31 3  123  2015/1/1 2015/12/31 ―----------------- 4  456  2013/1/1 2013/12/31 5  456  2013/1/1 2013/12/31 A列の 数字は2700種類程あり、エクセルデータは1万行程度となります。 マクロや関数など、ヒントだけでも知りたいので、 分かる方教えていただけると嬉しいです。

  • 回答No.4
  • banzaiA
  • ベストアンサー率16% (100/595)

回答というより、 補足説明の要請です。 >抽出したい数字がふくまれている というのは、例ではB列だけですが、C列以降にもあるのかどうか? つまり抽出する数字は、B列だけを探せばいいのかを教えて下さい。

共感・感謝の気持ちを伝えよう!

質問者からの補足

>>例ではB列だけですが、C列以降にもあるのかどうか? C列以降にもあります

  • 回答No.3
  • mu2011
  • ベストアンサー率38% (1910/4994)

一例です。 データをシート1、抽出をシート2として、抽出コードを入力する方法です。 シート1タブ上で右クリック→コードの表示→以下のサンプルコードを貼り付けてマクロ実行してください。 Sub シート1を検索して結果をシート2() Dim key As Integer key = InputBox("抽出コードを入力して下さい。", "抽出コードの入力") b = 1 For Each a In Sheet1.Range("B:B") If a.Value = key Then Sheet1.Rows(a.Row).Copy Destination:=Sheet2.Rows(b) b = b + 1 End If Next End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • tom04
  • ベストアンサー率49% (2537/5117)

No.1です! たびたびごめんなさい。 前回のコードでは後半部分に間違いがありましたので 正確に表示されないと思います。 ↓のコードに訂正してみてください。 Sub test() Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column If ws2.Cells(1, 1) = "" Then Exit Sub If WorksheetFunction.CountIf(ws1.Rows(i), ws2.Cells(1, 1)) Then ws2.Cells(i + 1, j) = ws1.Cells(i, j) End If ws2.Cells(i + 1, 1).NumberFormatLocal = "m/d" Next j Next i Dim k As Long For k = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 If WorksheetFunction.Count(ws2.Rows(k)) = 0 Then ws2.Rows(k).Delete (xlUp) End If Next k End Sub 以上、何度も失礼しました。m(__)m

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • tom04
  • ベストアンサー率49% (2537/5117)

こんにちは! 当方は技術者ではありませんが・・・(建築関係の技術職ではあります) ↓の画像のような配置の場合のコードです。 Sheet2のA1セルに検索したい値を入力すればその行が表示されると思います。 Sub test() Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column If ws2.Cells(1, 1) = "" Then Exit Sub If WorksheetFunction.CountIf(ws1.Rows(i), ws2.Cells(1, 1)) Then ws2.Cells(i + 1, j) = ws1.Cells(i, j) End If ws2.Cells(i + 1, 1).NumberFormatLocal = "m/d" Next j Next i Dim m, n As Long For m = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 For n = 1 To ws2.UsedRange.Columns.Count If ws2.Cells(m, n) = "" Then ws2.Cells(m, n).Delete (xlUp) End If Next n Next m End Sub 以上、かなり無理やりって感じのコードですので 他に良い方法があれば読み流してくださいね。m(__)m

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Excel複数列の複数の条件を満たしたデータを抽出

    2列(N列,O列)に1~3の数字が入ってる行を、指定したsheetへ抽出させるVBAのマクロを 作成したいのですが、VBAが全く分からず困っています。 または、Excel上でも簡単に上記の事が出来るのでしたら、その方法も教えて下さい。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • Excel VBAでオートフィルタで抽出したデータの一部だけ貼り付けるには

    いつもこのコーナーでは皆様にお世話になっております。以下のVBAマクロが組める方ご教示ください。 Sheet2にあるデータに複数条件でソートをかけ、ある数字(1から18まで)を入れたら、オートフィルタでE列のデータの選択部をSheet1のある部分に1行貼り付けるという作業です。以下のInputBoxに数字を入れるところからです。 (ソート後、どの数字を入れるか判断) ↓ InputBoxにある数字"○"(1から18まで)を入れる ↓ オートフィルタE列「"○-"で始まる」or「"-○"で終わる」 ↓ 抽出されたデータのE列(1列だけ)のデータ(上から17個分)を選択 ↓ 選択部をコピー ↓ Sheet1を選択。Sheet1の"K5"セルに行列を入れ替えて貼り付け という流れなのですが・・・ わかる方教えてください。よろしくお願いします。

  • EXCEL:ゼロ以外のデータを詰めて抽出する方法

    初めて投稿します。よろしくお願いいたします。 EXCEL2000を使用しています。 オートフィルタを使わずに 関数でデータを抽出する方法で悩んでいます。 下記<データ>が存在しています。 2行目がゼロ以外のものを、 別シート<抽出>に上から詰めて抽出したいのです。 <データ>   A列 B列 C列 D列 E列 1行 1  2  3  4  5  ←日付 2行 5  3  0  2  0  ←数字 <抽出>別シート   A列 B列  1行 1  5 2行 2  3 3行 4  2   ↑  ↑   日付 ゼロ以外 関数については中級レベルだと思います。 いろいろ試したのですが、関数を組み合わせてもなかなかうまくいきません。 どなたかご教授いただけないものでしょうか? よろしくお願いいたします。

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • データ抽出について

    エクセル初心者です。 エクセル2003を使っています。 sheet1に元データとなる表があります。 ・データセル内は数値データです。 ・行方向へは200程度 ・列方向へは1500程あります。  A   B    C    D   E     F  1日付 項目1 項目2 項目3 項目4 項目5 ・・・ 2 3 4 5 6 この元データからsheet2へ日付をキーにして行データを抽出したいのです。 抽出先のsheet2のA列に予め目的の日付データのみ1200程入っています。 最初Vlookupでやり始めたんですが無理と分かりました。 フィルタオプションで試みたのですが、「検索条件範囲」の式の書き方が 分からず困っております。 OKWaveの関連したQAを参考に試行錯誤を続けていましたが、進展がありません。 お詳しい方よりのご回答をお待ちしております。

  • エクセルで抽出した不特定数のデータを行数の決まった別シートに取り込む方法を教えてください

    エクセルでマクロを作り始めた初心者です。 Sheet1に、氏名、住所、TEL、会社名、担当者、金額・・・と続くデータが6000レコードほどあります。(レコードは随時増えていきます) Sheet2では、担当者名を条件にSheet1から必要な列(上記に記載したもの5つ)のみを抽出するマクロでデータを取り出すようになっています。 抽出したデータをsheet3のフォーマットに氏名、住所、金額の列だけ入れるのですが、入れられる行が20行と決まっており、最後の行には、合計欄が入るようになっています。 不特定数のレコードを20行ごとにページを区切って印刷するにはどうしたらよいでしょうか。ご教示お願いします。

  • エクセルでデータ抽出するには?

    まったくのエクセル初心者です。 エクセルで、シート1のデータの特定科目を抽出してシート2にコピーしたいのです。 シート1のデータは 5/1 消耗品    2500 5/3 水道光熱費  8000 5/5 消耗品     700 5/7 消耗品    1200 この中から消耗品と記入されている行をシート2に抽出したいのです。 マクロは全然わかりません。。簡単にできる方法は無いでしょうか?よろしくお願いします。

  • データ抽出法

    一度似たような質問をしましたが応用がきかないので、教えてください。 Sheet1A列に入力されたデータ群を含むデータを別sheetから抽出したいのですがやり方がわかりません。 要は、Sheet1A列に10000件のデータが入力されているのですが、それらを含むデータを別シートから検索したいのです。(別シートで10000回検索しない方法が知りたいです。) よろしくお願いします。

  • アクセスでデータ抽出

    A列に数字が、B列にデータ、C列には○と×が入っています。 A列は同じ数字が複数行あることもあり、 同じ数字でも○の時と×の時があります。 A列が同じ数字であるものを1グループとすると、C列の行ががすべて○のグループだけを抽出したいのです。 A列 B列 C列    123 aa  ○ 123 ab  ○ 123 zs  ○ 325 dd  ○ 325 dg  × 500 ff  ○ (上の場合、A列が123と500の行を抽出したい) どうしたらいいでしょうか? できればプログラムではなくクエリなどの操作でお願いします。