• 締切済み

エクセルVBAでデータベースを作成しています。

エクセルVBAでデータベースを作成しています。 A列には日付データが日付が古い順に上から入っています。 B列以降は出荷数や次回納品日などの付属データが入っています。 A列(日付) B列(出荷数) 7/1     10 7/15      20 7/31     5 8/2     10 8/4     25 8/23    10 8/30    20 9/2     15 9/20    21 9/30     3 出荷データを更新する度に、最終行の次の行に新しいデータが追加されます。 上記データベースは3か月分のデータだけでも行数が3万近くになるため、エクセルの 限界行数に達する前に、何か手を打ちたいのです。 例えば、予め6万行を限界行数に決めておき、データ更新する際に、データベースの限界行数までの残り行数と、追加するデータの行数を比較して、後者が大きいときには、データ、つまりデータベースの行を消去する。というマクロを組みたいと考えています。上記の例で説明すると、10月分のデータを追加しようとして限界行数に達することが分かった場合、7月に該当する行を一括して消去する。という流れです。 限界行数に達したときに、MsgBoxで「1か月分のデータを削除してよろしいですか?」→OKのときに処理を実行するという流れで行いたいのですが、何かよいアイデアがあれば教えてください。

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

>データベースの行を消去する 行が超えてしまうから消去してしまえ、というのはお薦めできません。 いろいろ検討案、再確認事項あります。 削除するくらいなら他のブックへ退避(移動)、としてください。 扱っている商品数はいくつくらいのオーダーですか。 おおむね30000商品ですか?。 この数でもって1ブックに記録する量を決めてもいいのではないでしょうか?。 A列B列しか使っていないならもったいないので、 縦軸に商品と月、横軸に1か月分1~31 これだけでも収まるデータ量が変わります。 過去の出荷数値を見る必要があるかどうか、 なければ最近2か月くらいを主なブックで管理、 過去3か月より前は退避用の保管ブックとして必要なときのみ参照 保持するデータを見なおしして、 それでVBAでどうするか考えたらと思います。 単純な値ならCSVファイル保管でも良い。 ACCESSがあればACCESSで行えばいいし、 導入できる予算あればそちらをお勧めします。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

そこまでやる気なら、そんな重たいエクセルのブックを取り扱うのは止めて、データはmdb(Access2003までのデータ形式)で持ち、必要なデータだけワークシートに読み込んで使用してはいかがですか。 http://home.att.ne.jp/zeta/gen/excel/c04p02.htm 万一、身の回りにAccessが1本もないという場合は、ExcelVBAからmdbを作る方法もあります。

関連するQ&A

  • エクセルVBA、数式の入ったセルのコピーについて質問です。よろしくお願

    エクセルVBA、数式の入ったセルのコピーについて質問です。よろしくお願いします。 シートのA列は日付の入ったセルがあり、データを更新する度に行が追加されていきます。 数式(1)~(3)は、それぞれ異なる計算式が入っており、日付データを参照して計算を行っています。   A    B    C    D 1 日付データ 数式(1) 数式(2) 数式(3) 2 日付データ 数式(1) 数式(2) 数式(3) 3 日付データ   4 日付データ   5 日付データ   A列にデータが追加したときに、B~D列の数式をA列の最終行までコピーしたいのですが、 どのようなコードを書けばよいでしょうか? ちなみに、1行目のB~D列には、データ更新の有無に関わらず、必ず数式が入っているものとします。 何かよいアドバイスがあればよろしくお願いします。 【補足】 単純に考えると、B1~D1をA列の最終行までAUTOFILLすれば良いのでしょうが、データ数がかなり多く、 この方法だと時間がかかってしまいます。A列のデータ追加前の数式セルの最終行から、追加後の最終行までとすると、処理は早くなるのでしょうか?

  • ExcelとAccess

    200~300万行あるカンマ区切りテキストデータ(過去10年の株価データ)があります。これをExcelで計算列を数列追加して(分析して)、データベースとして使いたいと思っています。もちろんExcelには行数制限がありますし、データベースとして使うならAccessなのですが、Excelは高度にできてもAccessは全くできません。 Excelの計算式は、Accessでも同じように使えますか? また、何かいいアイデアはないでしょうか。

  • 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 書き込み(ペース)で思考が停止状態です。 どのようにすれば良いでしょうか ?

  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • VBA 表作成 再 続

    引き続きよろしくお願いします。 入力データというブックがありそこには B列に日付と曜日(日付の下)3行目~、 M列に区分(1か2が入力)3行目~、 T列に商品名3行目~、 AQ列に商品数3行目~、 BA列4行目~にコードが入力されています。 日付を入力したブックに 入力データにある、日付の部分を見て入力フォームで日付から1ヶ月の間の日付で一致すれば、商品名、コードを別ブックにある表に貼り付けます。日付部分の表に数値を商品名とコードにあわせて貼り付け、日付も、商品名もコードも同じであれば足してから表示します。 元にあるのはひとつ分しかはいらないので増えるたびに行数を挿入していくようにします。 最初にある表は    B   M   L ・・・ 4          日付・・・ 5          曜日・・・ 6  商品名 コード 数値・・・ 7          小計・・・ 8  商品名 コード 日付・・・ 9          小計・・・  10         合計・・・ という表になっています。上段には区分1、下段には区分2のものが入ります。 わかりますかね・・・;; 説明下手で申し訳ありません よろしくお願いします

  • excelデータベースを作成し別bookに転送

    現在、エクセル2007で行を日付で列を項目にしてデータベースを作成した場合、そのbookに新規にシートを設けて、データベースシートから必要なデータを印刷レポートやグラフに転送するとレポート様式の種類が多いことからかなり、容量が大きくなるため、別のbookにレポートやグラフを作成し、必要なデータだけを転送することはできないでしょうか。その際、レポートbookは開けずに転送できれば、なお良いのですが・・・・可能かどうかお聞かせください。アクセスとかはできればさけたいです。よろしくお願いします。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • エクセルのデータベース関数を教えてください。

    エクセルのデータベース関数を教えてください。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のスコアだけを集計する方法が分かりません。 DSUMでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

  • EXCEL VBAについて

    いつも識者の皆様にはお世話になっております。 Excel VBAのことで質問させてください。 下記のようなシートがあります。 データの状態は下記です。 1. 1行目は必ずタイトル行になっています。 2. 1行目が「入荷_1」になっている列以降の日付はシリアル値となっています。 ※必ずしもG1が「入荷_1」となっているとは限りません。H1だったりI1だったりします。 VBAでやりたいことは下記です。 1. 過去取引と現在取引の状態によってA列に入力する文字列を変える。 過去取引_1=有 現在取引_1=有 の場合 「OK」 過去取引_1=有 現在取引_1=無 の場合 「NG」 過去取引_1=ブランク 現在取引_1=有 の場合 「確認要」 2. 「入荷_1」以降の列で「入荷_1」「出荷_1」など、アンダーバー以降の文字列が同じになっている2列を一まとめとして、そのどちらかもしくは両方に日付の入っているセルを探し、その列の1行目の、アンダーバーの次の文字から最後の文字までを[]で囲んだ文字列をB列に入力する。 ※_1にも_2にもある場合は、アンダーバーを使って文字列を連結する。(B2セル) ※パイナップルやぶどうのように入荷か出荷のいずれかにしか日付が入っていないものもある。 3. タイトル行が「入荷_1」となっている列以降で日付の入っている列を探し、出荷から入荷を引いた数字をC列に入力する。 ※_1にも_2にもある場合は、アンダーバーを使って文字列を連結する。(C2セル) これを2行目から1行ずつ最後の行まで行い、かつ、このシートはブックにある複数のシートの中の1つですが、BA1セルが空白ではないシートにだけこの処理をしたいのです。 どうやらSelect Caseという構文を使えばできそうだというところまで突き止めたものの、条件が僕には複雑すぎて(特に2列を1まとめにするところ)まったく進みません。 どなたか、上記内容の場合どのような構文になるのか教えていただけませんでしょうか。 よろしくお願いいたします。

  • データベースアプリの作成

    Visual Studio Express 2013 for Webでデータベースアプリを作成しようとしており、そのメインとなる部分として、データをエクセルのように表形式で扱いたいのですが、なかなかうまくいきません。ネットにサンプルプログラムがありそうなものですが、見つかりません。部分的なサンプルを駆使して、現在LinqDataSourceとGridViewを用いて途中までは作成しています。 欲しい機能としては、 1.データ検証ありで、データの追加、更新 2.データの削除(確認ポップアップあり) 3.各データでフィルタリング表示(起動時は全データ表示。フィルタリングを外せば全データ表示できる) 4.データ読み込み後、他者が更新した1行(1レコード)を更新しようとしたら、その旨表示して更新しない。 5.エクセルファイルにエクスポートもできれば嬉しい。 何かよいサンプルプログラムはないでしょうか。

専門家に質問してみよう