エクセル2016にて台帳作成をしています。
下記のような台帳を作成したいのですがどのような手順で行うのが簡単でしょうか。
シート1 台帳
行ごとに番号が割り振られている(001~600番
その番号をもとに同じ行へ抽出したいデータが複数ある
シート2~ データシートを日々追加していく
データシートは毎回同じものを使用、内容だけが変わる、セルの位置同じ
シート2~の特定のセルにある番号は必ずシート1に記載された番号を使用
(重複しない)
上記のような内容の台帳を作成したいのですが、毎回シートを別ファイルからコピーして追加していった場合に、自動で台帳へ必要データが抽出されるようなことはできますか?
当方、エクセルの応用知識が少なく、WEB検索してもどれが自分の疑問に該当するのかわからず、困っております。
どなたか教えていただけたら嬉しいです。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
すみません。
No.6です。ひとつ抜けてました。
大変申し訳ございません。
(01)~(03)に加えて(04)として、
(04)VBA+QueryTableオブジェクト+SQL
がありました。
(02)~(04)は、集計のモトとなるシートが自ファイルにあっても使えますが、Microsoft Query という機能は古いバージョンの場合しか、自ファイルのシートは見に行けないです。多分これも2007以降は、それができません。基本的には、別のExcelファイルから、台帳や日々のデータのシートを見に行く形となります。(Microsoft Query は一応Excelから独立したソフトウェアですが、Excelと連携できるようになっています。)
(02)~(04)は、その制限はありません。
あと、注意事項として、古いバージョンのExcelなら 「Microsoft Query の結果の表 = 基本・QueryTableオブジェクト」なんですが・・・、多分、バージョン2007あたりから、Microsoft Queryの結果は「テーブル機能」の表の中に埋め込まれる形に変わったので(2010からかも?)、「Microsoft Query の結果の表 = テーブル機能+QueryTableオブジェクト」という感じになりました。
テーブル機能(ListObjectオブジェクトだったかと思います)が、埋め込み用のオブジェクト=ガワ=コンテナみたいなもの になって、その中にQueryTableオブジェクトが埋め込まれます。
要らない情報かもしれませんが、VBAでQueryTableオブジェクト+SQLで各種リストアップや集計を行う際に必要な知識となりますので、一応、お知らせだけ・・・・。
大変、失礼いたしました。
No.6
- 回答日時:
細かい事情がわからないので、すみませんが、ご質問のような感じですと、一般的には「リレーショナルデータベース(=リレーションやSQL)」とかいうものを使うような格好となるのではないでしょうか?
(SQLやリレーション=リレーショナルデータベースで使うデータ抽出専用の命令語句的なもの。VBAより効率が良い場合もあります。)
Excelの場合だと、64bitは私は持ってないのでわからなくてすみませんが、32bit版であれば、以下の機能などが「リレーショナルデータベース(=リレーションとかSQL)」が使えます。
(01)Microsoft Query(64bit版でもOKかも?)
(02)VBA+ADO+SQL(64bit版でもOKだったはず・・・)
(03)VBA+DAO+SQL
(基本、32bitだけ。で、もしかしたら裏技あったかも?だったような・・・)
※テキトーですみません。
2010以降では、テーブル機能を設定した表にのみ、「リレーションシップ機能」が使えるかも知れませんが、ちょっと使い方が面倒くさい(というは僕は挫折しました)ので、上記の(01)~(03)のほうがやりやすいと思います。
ただ、どれも、追加や編集はできますが、Excelの場合は、(ODBCドライバなどの関係なのか何なのか分かりませんが)「削除」ができません。
なので、削除フラグを立てて「削除と見立てる」ことが必要です。
あるいは、削除だけ、VBAの行削除でやるような格好です。
どのくらいの規模かはわかりませんが、確かに他の皆様のおっしゃるように、業者さんにまかせたほうが良いご質問内容かもしれません。
ただ、ご自分で「Excelで」されるなら、
もしくは、誰かに手伝ってもらう、お金はかけたくない、ということでしたら、
・SQL、
・Microsoft Query、
・ミドルウェア(ADOやDAO)などを・・・
特に、まずはSQLを学んで何ができるかチェックしてみると良いと思います。
「SQL」の概要がわかれば、Microsoft Queryにて、Accessの「クエリ」、または、SQLServerの「ビュー」のようなことができます。(GUIで、かんたんなリレーションや条件抽出、集計なら、SQLが深くわからなくてもなんとなくで扱えます。)
それがわかるようになったら、VBA+ADO+SQL、とか、VBA+SQL+QueryTableオブジェクト、などを使うと、より効率的な管理ができる・・・かもしれません・・・。
※小規模なら、正直、ExcelよりもAccessを使うほうが、10倍はラクちんでコストもかからないんですけど・・・。
なお、「SQL」は「システム構築」の世界では「複式簿記や英語と同じくらい公用語的」で、ExcelVBAよりもよく使われていますので、質問も受け付けてもらいやすいといえば、そうかもしれません。(ただ、「独学」だと、最初は多少とっつきにくいかも・・・。それでもVBAよりも入りやすいとは思いますが・・・・。)
>毎回シートを別ファイルからコピーして追加
このやり方ですと、「台帳(マスタテーブル)」と「データシートを日々追加していくシート(トランザクションテーブル)」を効率よく使えなくなってしまうので、本当なら、1行あたりにたくさんの列を作って、すべてのデータを入力してしまえるほうが好ましいと思います。
(俗に言う「リスト形式の表」とか「データベース形式の表」という形です。カード形式データベースの1画面分のデータを1行の中にすべて入力していく形です。)
もし、「データシートを日々追加していくデータの項目を多少公開したり、画像にできるなら、そのようなことも追加で載せたほうが、より、的確な回答がしていただけると思います。
基本的には、今回のようなご質問の場合、回答者の皆様が知りたいのは、
・台帳のシートと日々のデータのシートの、
・どんなデータを入力したいか=どんな列を作りたいか? の「詳細」です。
それがないと、だれも具体的な回答ができないのです。
まずは、
・リレーショナルデータベース
・SQL、
・Microsoft Query、
・ミドルウェア(ADOやDAO)
といった語句でもGoogle検索していただき、どんなことができるのかくらいをお調べになると、再質問や追加質問するときも、何らかのヒントになるかもしれません。
全部、「小規模かつセキュリティ捨て」「LAN共有無し」なら、「目的によりますが」、でもExcelでもやれないことはない、という事柄ですので・・・。
No.5
- 回答日時:
> WEB検索してもどれが自分の疑問に該当するのかわからず、困っております。
どのような疑問をもっているのかをすこしは、明確にした方がいいと思います。
> シート2~ データシートを日々追加していく。 データシートは毎回同じものを使用、内容だけが変わる、セルの位置同じ。
データシートは一枚だけであるなら、追加していくという表現は不適切です。 データシートは毎回同じものを使用し、セルの位置同じで、セルに記載している内容だけを変えるのであるば、そのように説明しないと、文を読んでも誤解を生む危険を増やすことになります。 シート2、シート3、シート4、、、、、と同じスタイルのシートを、シート1のある1つのブックに日々追加して、数百シートにもなっていく状態を考えているのであれば、そのように説明しないと、読み手・聞き手は思考を絞るのが難しくなります。
> シート2~の特定のセルにある番号は必ずシート1に記載された番号を使用(重複しない)
シート2、シート3、シート4、、、、、と同じスタイルのシートを日々に追加していく方式の場合、シート1に記載されたある番号が、シート3、シート8に出現してないという保証はどのようにされるのでしょう。 仮に、同じ番号が複数のシートに出現していた場合にはどうするのでしょうか。
シート2、シート3、シート4、、、、が「日報」のようなもので、それをシート1の「台帳」に転記するようなイメージですと、一週間、一ヶ月間、半年間では、同じ番号が複数回でてきたり、ある番号は出てこないというケースもあるような気もします。 期間内に同じ番号が複数回でてきた場合、どう取り扱うのかは台帳処理では重要です。
シート2に(番号A2、番号B2、番号C2、、、、と合計8件のデータ)があったり、
シート3に(番号3A、番号3B、番号3C、、、、と合計12件のデータ)があったり、
シート4は(番号44の1件のデータ)だけだったり、
シート7は(合計123件のデータ)があり、しかも、1件目~23件目までは詰まっているが、24件目は7行開いた後の行に書かれ、25件目以降123件目までは詰まっていたりというようなこともあるのか、そういうことは起きえないのか、 状況がわからないと、読み手・聞き手は思考を絞るのが難しくなります。
> シート1(台帳) 行ごとに番号が割り振られている(001~600番)
台帳のその該当番号の行に、複数のデータを転記したい
期間内に同じ番号が複数回でてきた場合、どう取り扱うのかは台帳処理では重要です。 例えば、65日目に追加したシート54には、番号だけしかなかった場合、(=番号以外のデータは空白 の場合) シート1の台帳の該当番号のところに過去に転記されていたデータは(空白に置き換える=データを抹消する)ことでいいのか。
> 毎回シートを別ファイルからコピーして追加していった場合に、自動で台帳へ必要データが抽出されるようなことはできますか?
どのような作業を想定しているのかがはっきりしませんが、(別ファイルから、シートn番を毎日作る)のであれば、シートnを作らずに、(別ファイルから、別の方法で、台帳に)データを追加・更新する方がイイ場合もありそうです。
シート2、シート3、シート4、、、、を残しておくのも、ただの入力記録という意味しかないのであれば、別形式の「データ更新記録一覧」に形式を変えて残す方が実用的ということも考えられます。
台帳をその後どう使うのかにもよりますが、Accessでも、Wordでも、Excelシートでも、どれでも台帳に使えます。 できあがっている台帳の使い方を考えるのが案外大事かもしれません。
(1000件以下のデータに、それぞれ20項目程度という程度)なら、方法を固定しなくても問題は少ないです。
《自動で台帳へ必要データが抽出されるようなことはできますか?》
できます。 ただ、なにをどうやるのかを、決めないと、 やりようがないです。
もちろん Excel2016でも、もっと古いバージョンでも、できます。
No.4
- 回答日時:
まず 言われていることが理解できません
もっと具体的にやりたいことを言ってください
「データシート」と言ってるのはExcelのsheetではありませんよね。何かの規格表か検査結果なのでしょうか?
(こちらはあなたの状況が一切わからないので 方言を使われても 理解できません)
>毎回シートを別ファイルからコピーして追加
シート(データシートじゃないですよね)を追加していくのですか?
私の経験から言うと 毎日、シートを追加していくような運用は メモリをバカ食いして動作が遅くなるのでやめた方がいいです
まぁ やったとしても 毎月ですかね。
でそういう時によく聞いてみると シートで分ける必要なんて全然なくて、列に一項目増やすだけで対応できることがほとんどです(そのデータが104万件(=シートの最大行)になるのに何年かかりますか?)
私は情報システムの仕事をしてきましたが Excelではたいていの人が 行と列とシートの使い方がまずくて無駄にしていることが多いです。 今回のそれではないかと思います。
実際のデータを含めてやりたいことを最初から言ってくれれば、もっと効果的な助言ができると思います。
No.2
- 回答日時:
自分も業者に作成依頼してもらうことを勧めます。
要は質問者さんがそれを作るにはとてつもない努力と時間が必要ということです。
(ここは作業依頼をする場所ではありませんので「代わりに作ってくれませんか」と言われてもその依頼を受けてくれる人はいないと思います)
個人的にはExcelではなくAccessのほうが向いている仕様だと思う。
・・・本題・・・
まずは基本になる台帳を作る。
データシートを都度コピーする仕組みを作る。
…が基本。
データを抽出したい…というのは台帳を作るときに対処しましょう。
とりあえず、一つ目のデータシートからデータを抽出するようにしましょう。
つぎに、追加したデータシートからも抽出できるように修正しましょう。
以上です。
・・・
この手順てAccessで普通にやる作業なんだよなあ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 複数のシートからグラフ...
-
エクセルで入力シートから別シ...
-
エクセルで入力→日付を自動判別...
-
Excel VBAを使った重複行の抜き...
-
VBAを利用しオートフィルタで日...
-
VBAのoffsetの動き方について教...
-
エクセルについて質問です 日付...
-
VBA セルの値と同じ名前のシー...
-
エクセルのワークシートが重く...
-
エクセルでのチケット販売POSデ...
-
ExcelVBAで、指定したシートに...
-
VBAでシート名をセルから取得し...
-
エクセルvba アクティブシート...
-
Aシートの情報をBシートに保存...
-
【エクセルVBA】処理速度を...
-
エクセル シフト勤務表から、...
-
エクセルVBAで元のシート上の特...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルにて別シートの値を参...
-
【Excel】VLOOKUP関数で複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
ExcelVBAで、指定したシートに...
-
エクセルのワークシートが重く...
-
IF, ISNUMBER, INDIRECTの組み...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
エクセル シフト勤務表から、...
-
Excel 複数のシートからグラフ...
-
VBAでシート名をセルから取得し...
-
Excelの中央値の複数条件について
-
エクセルについて質問です 日付...
-
エクセルで入力→日付を自動判別...
-
VBAのoffsetの動き方について教...
-
エクセル自動の年月
-
エクセルVBA:表の内容を担当者...
-
エクセル 毎日更新する表のデ...
-
エクセル マクロを使って日々...
-
質問:特定文字列から空白行ま...
-
EXCEL VBA 一致しないデータの...
-
エクセルにて別シートの値を参...
おすすめ情報