• 締切済み

エクセルで表の抽出

Windows2000でExcel2000を使っています。 一応VBを使っています。 そこで、 荷主マスターみたいな表があります。 A列にふりがな、B列に漢字、C列に4月の売上個数・・・O列に3月の売上個数が入っています。 表は、あいうえお順でソートされているのですが、 そのうちの、ア行の1月分だけ抽出し別の場所に貼り付けたいのですがうまくいきません。(当然その後に、カ行の1月分・・・ン行の1月分と作業をする。)   A    B   C ・・・・  M  N  O ふりがな 漢字 4月 ・・・・1月 2月 3月  あ    亜   2      3  5  3  い    井   4      2     2  う    卯   1          2  か    化          1  2  4  さ    差   3       5  6  2 こんな感じの表です。        つまり今月は、A列のア行 B列のア行 M列のア行を抽出する。 来月は、AとBは同じで2月N列を抽出する。 マクロを使い自動化したいので、VBに詳しい方教えてください。 分かりづらい質問で申し訳ありませんが、よろしくお願いします。

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

あんまりスマートじゃないけど、こんな感じですか? 試すならテスト環境で。 4月~3月のセルには、日付型を書式設定した「x月」ではなく、テキストの「x月」が入っているとします。 Sub Test() Dim ws As Worksheet, tws As Worksheet Dim stRow As Long, edRow As Long, fR, fMonth fMonth = Application.InputBox("対象月を指定して下さい。", _           "対象月", Format(Date, "m月"), Type:=2) If fMonth = False Then Exit Sub Set tws = ActiveSheet With tws  Set fR = .Cells.Find(fMonth, .Range("A1"), lookat:=xlWhole)  If fR Is Nothing Then Exit Sub  stRow = 2: edRow = 2  Do While .Cells(stRow, 1).Value <> ""   Do While .Cells(stRow, 1).Value = .Cells(edRow + 1, 1).Value     edRow = edRow + 1   Loop   Application.Union(.Range(.Cells(stRow, 1), .Cells(edRow, 2)), _   .Range(.Cells(stRow, fR.Column), .Cells(edRow, fR.Column))).Copy   Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))   On Error Resume Next   ws.Name = .Cells(stRow, 1).Text & "-" & fR.Text   ws.Range("A1") = .Range("A1"): ws.Range("B1") = .Range("B1")   ws.Range("C1") = .Range(fR.Address)   ws.Range("A2").PasteSpecial xlPasteAll   Application.CutCopyMode = False   stRow = edRow + 1   .Activate  Loop End With End Sub

toshima
質問者

お礼

回答ありがとうございます。 うーん、勉強不足のせいでしょう。難しいですね。 これを参考にがんばってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELで表を抽出する

    ・A列に日付、B列に件名を入力した表があります。 ・A列の日付は、ランダムに、繰り返し現れます。 この表から、たとえば7月だけの、A列に日付、B列に件名の表を抽出する場合、 手動でする場合は、最初の表を日付順にソートし、黙視で7月分をコピーし、別表に貼り付ける、というやり方でできますが、 数式や関数で自動的にやる方法はないでしょうか? マクロが必要になりますか?

  • Excel 関数を使う? 抽出データ

     以下について教えてください。 ============================== 【基になる表--「A」の表と呼ぶことにします。】  列方向のリストには左から「月」「日」「地域」「数」が並んでいる。  「月」には1月から12月までのデータが、 「日」には1日から30もしくは31日のデータが、 「地域」には北海道、青森、新潟、東京、大阪の5つの地域が、 「数」には売上数が並んでいるとする。 【基になる表から抽出して作られた表--これから便宜上「B」の表と呼ぶことにします。】  列には「地域」の中から北海道と青森を、 行には「月」から9月を、「日」から15日を、 列と行が交差するセルには「数」を置き、「9月15日の北海道と青森の売上数」の合計を抽出したい。  さらに、Bの表において、 「地域名」の北海道を削除して新潟にしたり、9月15日ではなく9月18日に置き換えても、 列と行が交差するセルに自動的に集計結果が表されるようにしたいのです。  ちなみに、Aの表もBの表も同じブックに作り、シートは別にします。 ===================================  DSumやIfSum関数だと私が作りたいBの表のような形式になりません。列方向にしかラベルを置けません。  ピボットテーブルを使った集計ならば、求めているデータ以外のデータも表示されてしまいます。  どうすれば求めていることができるでしょうか?どうか皆さんの知恵をお貸しください。

  • エクセルにてこのような抽出はできますか?

    エクセルにてこのような条件抽出(?)はできますでしょうか? 例えば下記のような売上データーがあります。 A列 売上月(4月~3月) B列 顧客名 C列 商品名 月別の売り上げデーターが毎日記入されます(1年間)。 1万行以下には全顧客名のリストが記入されています(例えば500社)。 この全顧客500社の内、売上の上がっていない顧客はどこなのかを抽出することはできますでしょうか? 売上データーを毎日記入することで、売上げのある顧客は分かりますが、売上げの上がっていない顧客はどこなのかを調べたいのです。 全顧客500社-4月売上顧客=4月売上げの上がっていない顧客一覧 こんなイメージです。 月単位で未売上の顧客を調べたいのです このようなことは可能でしょうか? どなたかご知恵を拝借できましたら幸いです。 ※1年を通して月別の売上げを記入します。   A     B    C 1   月  顧客名  商品名   2  4月  顧客A  商品A 3  4月  顧客B  商品B 4  4月  顧客C  商品C 5  4月  顧客D  商品D   ・    ・    ・   ・    ・    ・   ・    ・    ・   ・    ・    ・ ------------------------- ※1万行以下に全顧客データーを記入します(必ずしもここでなくても別シートでも問題ありません) 10000 顧客A 10001 顧客B 10002 顧客C 10003 顧客D 10004  ・ 10005  ・ 10006  ・ 10007  ・ 10008   よろしくお願い致します。

  • エクセルの抽出なんですが

    すみません、エクセルの抽出について 以前ここで質問させて頂いたんですが、また新たに別の抽出をしたいのですが・・・ VBAでも簡単であればいいのですが、 できれば数式で教えていただけないでしょうか? 内容ですが、 シートA(データ用)の B列に受注番号があります。 C列にその受注番号の詳細として商品名が入っており、 D列にはC列に対しての値段が入っております。 さらに、C列の最後には消費税の項目があり、 同じD列にその消費税の価格が入っています。 これが受注番号ごとに記載があり、 商品の個数は受注番号によって異なります。 これを基にシートB(抽出用)で 受注番号に対して(打ち込めば) その商品の値段を個数分全て抽出させ、最終は合計額が知りたいのですが、 でも、最後にある消費税は除外させたいです。 消費税の抜き方は個数に対して最後なのでこの条件から抜くのがいいでしょうか? 別の列にコード欄があり、消費税のコードは決まっていますので この条件を使ってできますでしょうか? オートフィルタとは違った考え方かなと思ったので こちらで質問させていただいたのですが 本当に申し訳ありませんが、どなたか教えてもらえないでしょうか? 宜しくお願いします。

  • エクセルでどう作ったらよいのでしょうか?(表です)

     <表1>                      <表2>    A           B        C     D    E   F・・・   1   月日          金額           4月  5月 6月・・・・              2  2007.4.5     100,000 3  2007.6.28    250,000 4     :            : :     :            :  --------------------------------- 上記のような表があるとします。 A2の場合は4月分と考え、A3の場合は6月分と考えます。 A列の月が4月分なら(表2の)同じ行の4月のところに、 6月分なら6月のところにB列の金額が入るようにしたいのです。 つまりA2の場合は、D2に100,000と入るようにするにはどのようにしたらよいのでしょうか? 教えて下さい。よろしくお願い致します。

  • 49名の名簿を7名ずつの表に抽出したい。

    エクセル2007です。 Sheet1のA列に210名の名簿があります。 この名前をSheet2のA列に7名B列に7名と7名ずつAD列までの表に抽出したいのですが教えて下さい。 Sheet2のA1に =INDEX(Sheet1!$A:$A,ROW(A1),0)に入力し、A7までオートフィルすると最初の7名分は、抽出されるのですがB列以降に7名ずつ抽出する時の関数を教えてください。

  • Excelでの複数結果抽出がわかりません

    商品の日毎受注個数の一覧表をExcelで作成しています。 A列には日付 B列にはその日の受注個数 が並んでいます。 そしてB列中の最大値、最小値をE1、E2に関数で表示させています。 B列からE1、E2セル参照で最小値を検索し、隣A列の日付をE1の右隣セルから右方向に並べて複数抽出したいのですが、(該当する日付をすべて表示)どのような関数、マクロを書けば良いでしょうか?

  • エクセル。表からの抽出について

    A表の中に複数の会社名と担当者がありますが、重複する社名もあります。 (例) 【Aセル】【Bセル】 A社・・・・山田 B社・・・・鈴木 A社・・・・田中 C社・・・・大田 これを別の表に社名を抽出したいのですが、同じ社名は1社とみなし社名の種類だけを抽出する方法はありますか。 (例) 【A表】→→【B表】 A社-----⇒A社 B社-----⇒B社 A社--⇒×重複するため除外 C社-----⇒C社 説明が不明瞭で申し訳ありませんが、宜しくお願いいたします

  • エクセル2007での月別売り上げの表について

    エクセル2007で下記のような表を考えています。         ○月           ○月     売上  予算  昨年売上 売上  予算  昨年売上 項目A A1  B1    C1   D1   E1    F1    項目B 項目C  ・  ・  ・ で、売上、予算、昨年とも別シートで一覧表があります。             1月売上 2月売上 3月売上 4月売上 項目A  A1   B1    C1    D1 項目B 項目C  ・  ・  ・ 下の1月売上、2月売上・・・を上の表にとばしたいのです。 上の表のA1のセルに =下の表A1 と入力まではいいのですが、これを2月にコピーすると、=下の表D1となってしまいますよね。 これを下の表B1としたいのですが、何かいい方法はないでしょうか? 地道に列番号を手入力で変えていくしかないのでしょうか? ご教示下さい。 よろしくお願いします。

  • 抽出した表でデータをカウントしたいのですが・・・

    タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。    A  B  C  D  E   F  G  H  I 1  ○           ○  ○  ○ 2     ○  ○     ○        ○ 3        ○  ○  ○  ○ 4  ○  ○     ○     ○ 5     ○            ○  ○    ○ 6     ○  ○     ○        ○ 7  ○        ○        ○     ○ 8     ○  ○     ○        ○ 9  ○        ○  ○     ○ この表では、仮に各行○が4つとして、ランダムに各列に○が振り分けられています。 A列・4個、B列・5個、C列・4個、D列・4個、E列・6個、F列・4個、G列・4個、H列・3個、I列・2個 という状態です。    A  B  C  D  E   F  G  H  I 1  ○           ○  ○  ○ 2     ○  ○     ○        ○ 3        ○  ○  ○  ○ 4  ○  ○     ○     ○ 5     ○            ○  ○    ○ 8     ○  ○     ○        ○ 9  ○        ○  ○     ○ ある条件でオートフィルによって、抽出した結果が上の表です。 今回の例では6,7行が消えた状態だったとします。 それぞれ、A列・3個、B列・4個、C列・3個、D列・3個、E列・5個、F列・4個、G列・3個、H列・2個、I列・1個 と、いう結果になりました。 このような状態になった表で最下段、この場合9から上に向かって3行分の○をカウントするような方法、または便利な関数はありますでしょうか? 今回の例ですと、最下段から、3行分、5、8、9のそれぞれの列の○をカウントするという感じです。 A列・1個、B列・2個、C列・1個、D列・1個、E列・2個、F列・1個、G列・2個、H列・1個、I列・1個 これが今回の例における求めたい結果です。 抽出してない状態でしたら、OFFSET関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;

専門家に質問してみよう