• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロやアクセスについて)

エクセルのマクロやアクセスについての勉強方法と使い道

このQ&Aのポイント
  • エクセルのマクロやVBAについて勉強しようと思っていますが、具体的な使い道がわかりません。
  • アクセスに関しても、エクセルと比べてどのような場面で使うべきかがわかりません。
  • 独学で学ぶ場合、どれくらいの時間がかかるのでしょうか?スクールに通うことはできません。

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

  • ベストアンサー
  • iapetus
  • ベストアンサー率60% (248/413)
回答No.3

すいませんが、ものすごくロングです。 ソフトウェアによって、管理するデータの、向き、不向き、というものがあるのです。 Excel は 表計算ソフトウェア で、データの単位は「セル」 です。 それが集まって縦横表となりシートを構成し、シートが集まってブックを構成しています。 Accessは、データベースソフトウェア(Data Base Management System : 略してDBMSとも言います)といい、データの単位は、複数のフィールド(項目?)が複数個並んだ、「行データ」です。 行データがたくさん集まって、テーブルというデータ集合を作り、テーブルが複数集まり、必要であれば、そのフィールド間の複雑な関係性の定義情報(リレーションシップ)と合わせて、データベースファイルを構成します。 Excelは、縦横に並んだ表形式の情報を、簡単に効率よく計算するのに向いています。 これに対し、もっと複雑な動作をさせたい(途中、条件となるデータを入力させたり、人の判断で処理を変えたりするなど)場合、表計算機能だけではできないので、マクロとプログラム(Excel VBA)でその機能を構築します。 VBAを使えば、Excelをあたかもアプリケーションソフトウェアのように見栄えよく、複雑な処理をさせることもできます。 たとえば、 ・データの抽出まではオートフィルタでオペレータができるけれども、そのグループ集計となると、パソコンに不得手な人にその操作をさせるのには敷居が高いし、操作ミスも出る可能性があるなら、シートに「集計」ボタンを置いて、それを押せば自動的にグループ集計までやってくれる。 ・集計結果を、締め処理として別ブックを自動的に起してそこへ転記し、名前を付けて保存のダイアログを自動で開き、オペレータにファイル名を入れて保存してもらう。 などの処理は、シートや式だけではできない、というか、プログラム化した方が、操作が直観的になります。 縦横表形式である、ということは、縦でも横でも、好きな場所に計算結果を表示させることも、豊富な式を入力するだけで簡単に作ることができます。 しかし、シートの大きさに限りもありますし、表を保持するだけでもメモリをかなり消費するため、1つのブックで管理できるデータ量の限界が比較的低く、膨大なデータを処理するのには向いていません。 また、同様の理由で、たくさんのデータが膨大な式で計算される場合、非常に処理時間が掛かることがあることも、Excelの欠点といえます。 Accessは、膨大なデータを格納して処理するためのソフトウェアです。 例えば、膨大な顧客情報を元に、銀行の口座情報と顧客情報を管理するシステム、航空会社やJRなどの予約管理システム、鉄道会社の運航管理システム、Googleなどの検索エンジンの知識ベース、地図情報・・・etcと、枚挙に暇がないほど、世の中の情報処理の根幹となるのが、DBMSと言って良いでしょう。 また、メモリが小さなパソコンでも、Excelよりずっと大きなデータを格納し処理することができますし、データを超高速で検索する機能も、設定次第で備わっています。 Accessは、パソコン用DBMSなので、そういった巨大なDBシステムを担える訳ではありませんけど、オラクル社のOracle、マイクロソフト社のSQL Server、IBM社のDB2などが、世の中のコンピュータシステム(最近大流行のクラウドコンピューティングも)を支えていますが、Accessはその子分のようなシステムです。 しかし、何でもデータが呑み込めるようになってはいても、データ単位が「行(これを、レコードといいます)」であるため、Excelのように集計したい列の範囲の下にSUM関数を入れれば合計が簡単に得られる、という訳にはいきません。 Accessは、データの格納と処理について、Excelよりずっとオールマイテイではありますが、全ての処理と仕組みとデータのリレーションシップを、人が定義してAccessに教えて組み上げないことには、何もできない、と言ってよいでしょう。 その、データの処理のためAccessにも、VBAが備わっており、Access単体で、相当のことがこなせるようにできます。 しかし、それを構築するためには、DBMSに関する基礎知識(ある程度はAccessがフォローしてくれますが、それでも最低限、SQL構文というものを理解していないといけません)と、プログラムに係る知識や、アクセス速度向上のDBチューニングの知識などが必要ですので、Excelより数段高度な知識が必要になると思います。 などと能書きばかり垂れていても、概念の説明にしかならないので、例示してみます。 年賀状・知人の住所管理 ▲Accesss ◎Excel 初期設定が多く、そのような簡便な用途にはExcelの方が向いている。 社員管理、給与管理(Excel,Accessを使う場合。本来は専用ソフトを使うべき。) ◎Access ○Excel データの堅牢性が必要なら、データが行単位のAccessの方が良いかも。Excelは、行を間違えても気付かなければデータ入力ミスに直結する。 どちらも、入力フォームを作り、行レベルのデータ混入に配慮すべき。 顧客管理 ◎Access ○Excel これも、どちらでも可能だが、データの入力フォームを作るなどして、データの入力ミスに配慮すべき。 顧客が数万人に及ぶ場合、Excelでの管理はメモリの関係で無理かも。 クラウド的な(DB連携)処理 ◎Access ▲Excel Accessは、複数のDBファイルを連結して一元管理する機能があり、例えば部署別に事務処理を別々のDBファイルで分散処理をするが、受注業務の原価管理、利益分析、社員の生産性分析などをする場合、DBを連結して全社的な情報管理をする必要がある。 こういった用途は、Excelでも可能だが、DBMSに管理させるべき処理と思われる。 番外 Accessは、完全な長方形になっている縦横表のデータシートを、Accessのテーブルとしてリンクしたり取り込んだりする機能がある。 これにより、データ入力はExcelでするけれども、処理はAccessにやらせる、ということができる。 一度、目標を立てて、小さくてもよいので、両方でシステムのプロトタイプを作ってみると、それぞれの特徴、得手不得手が判ると思います。 また、習得にどれほど掛かるのかについては、コンピュータシステムについての個々人の経験と練度によって、大きく違うと思います。 古くからコンピュータ関連の仕事をしているプログラマが、いきなりExcelやAccessを触った場合では、Exce & Excel VBAで2週間、Accessで1か月程度でモノにしてしまうでしょう。 しかし、Excelの計算式を20個くらい知っていて、概ね事務処理には困らないレベルの人が、いきなりExcel VBAとなれば、敷居は高いでしょうね。 その人で、Excel VBAで3か月で基礎を把握し、Access & Access VBAだと、半年で基礎、練度を上げるのに1~2年程度はかかるのではないでしょうか。 なお、本も結構ですが、ネット上には、独学用の情報が、山ほどアップされていますので、本と並行して参考にするとよいと思います。

kimi1980
質問者

お礼

大変詳しい回答ありがとうございます。 勉強したいと思います。

その他の回答 (5)

noname#217196
noname#217196
回答No.6

Excelの場合、入力帳票、出力帳票にデータが密結合している職場がおおく、ブック、ワークシートを横断してのデータ集計、データ抽出の際に、Excel VBAプログラムでの処理による場当たり的な対応に需要があります。入力帳票や出力帳票に項目の増減や配置変更が発生するたびにExcel VBAプログラムも修正ということがありがち。 ブック数、ワークシート数、レコード数がExcelで扱いきれないくらい増えてくるとデータベースソフトでのデータ蓄積が発生します。テーブルの追加削除、テーブルの正規化、テーブルのこうもくの追加・削除により、SQL文、マクロ、Access VBAプログラムに修正が発生します。 Excelのセル書式やワークシート関数で、データ型、データ長のチェックは可能ですが、テンプレートブックをユーザーが使わなかったり、書式を変更したりでほぼ機能しなくなります。また、書式設定の使い方を理解できていなくて、金額入力セルに円つきで入力し文字列扱いのため集計できない低レベルな職場やクライアントがあります。 なおExcel、Accesのユーザーとしての習熟度、多言語でのプログラミング実務経験、スケーラビリティや移植性・保守性を確保したリレーショナル・データベースシステム設計・正規化・構築・運用、SQL文と集合論の技術知識、エラー処理、エラー・ログやデータベース・アクセスログ出力実装、マルチユーザー対策、SQLインジェクション対策、XML、HTML、データベース用画面帳票作成、データベースユーザー権限別設定、データベースのバックアップ計画、ASP用データベースのデータ更新オペレーション、データインポート/エクスポート/印刷時の文字化け対策、パフォーマンス計測とチューニングなど考慮すると、独習三ヶ月だとExcel VBAがやっとのように思います。 パソコン教室や専門学校のカリキュラム(内容詳細と講義時関数)と比較検討するのが賢明でしょう。

kimi1980
質問者

お礼

回答ありがとうございます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

エクセルのマクロなんかだと、よく言われるのは「定型業務の自動化」ですね。 たとえば毎日店舗とかから ・「その日の売り上げ」とか ・「集客状況」だとか ・「生産報告」だとか  が送られてくるのを、本社の集計表にさくっと集約する なんて仕事です。 単純に手を動かしてコピー貼り付けてれば、できる作業です。ただ数が多いと、ちまちまやってたのでは時間中に終わりません。こういうのはマクロで自動化して、アナタはもっと別の仕事をします。 他にも例えば ・一見一葉形式の帳票を1枚作成したら、その内容を自動的にリストに集積する ・データリストから条件を付けて該当データを自動で抽出させる、更に指定の帳票形式で印刷する といった「業務の自動化」にもマクロを使います。 アクセスはどうでしょう。 あなたが試しに勉強してみた「顧客伝票」といったモノは、多分ほとんどそのまま「販売実績管理」とか「生産管理」「在庫管理」といった場面にも使えると思います。 ただ、アクセスはエクセルよりももっと複雑なデータを扱う用のソフトですから、単純な縦横集計止まりの部署では、あまり使われないのは事実です。 >独学で勉強 エクセルマクロについてお話ししてみると、最初に挙げた事例はいずれも「エクセルを手で動かせば出来ることを、マクロを使ってもっと効率化する」というお話になっています。 これは言い換えると、エクセルで「自分の手を動かしてできない」ことを、マクロを使ったら何か魔法のように答えが出てくる、そういうモノじゃないっていう意味です。 あなたが今後どんな仕事をするか判りませんが、「自分の仕事をエクセルを使って支障なくできる(ぐらいのエクセルの基礎的な知識がある)」なら、2週間も勉強すれば、マクロを使って自動化するところまで持っていけます。 でも仕事ごとに「エクセルの使い方」からまた勉強しなきゃならない様子だった場合は、3か月かけても足りないかも?しれません。

kimi1980
質問者

お礼

詳しい回答ありがとうございました。

回答No.4

プログラマなど、エキスパートの皆様のような高度な知識は持ち合わせていませんが、一言。データの種類に応じて使うソフトも向き不向きがあるわけですが、それは、やってみないと分かりませんよね? 一つの目安になるのは、データ量だと思います。例えば3,000行以内、100列以内といった小規模なデータなら、それを使って行う処理もそう高度なことはしないだろうと考えると、Excelで十分、となります。Accessだと、かえって操作や管理がお手軽じゃなかったりするので、Excelがラクです。 ですから、会社で庶務的な作業をする程度の用途ならExcel、本格的で膨大なデータベースを構築するならAccessが必要、という感じではどうでしょうか。本格的なことをするには勿論、勉強する時間と労力が要りますけどね。 他の回答者さんもおっしゃっていますが、Excel、Accessに限らず、IT技能の向上のためには、インターネットから知識を得ることが不可欠だと思います。本もいいですが、どんどん検索しましょう。

kimi1980
質問者

お礼

回答ありがとうございます。 ネットも利用したいと思います。

noname#208392
noname#208392
回答No.2

>単純作業を自動化するものだと勉強しましたが そのとおりだと思います。 帳票Aという書式で手に入れる書類を、定期的に帳票Bという書式に書き写さなければならない、というようなものが典型的な使い方のひとつだと思います。 機械的に決まりきったことを、人間が時間かけてするのが馬鹿らしい、というようなことがあるでしょう? そういうのをマクロを使って自動的に作業させるのです。 >関数式でも作れるものもあり エクセルで計算するときには、セルに直接計算式を書けばいいのですが、複雑な式は後から見ても何をしているのか全然分かりません。 そういうときには、私は自分で関数を定義することにしています。 例えば、場合分けをして、それぞれの場合で計算の仕方がちがう、というような場合です。こんなのを、if()で、何重にも()をつけるより、VBAで Select Case を使った方が絶対に分かりやすいです。 >データベースとしてアクセスを使ったほうが良い時 ここの掲示板での典型的な質問に、「商品番号を入力したら隣のセルに商品名を表示させたい」というようなものがあります。商品なのか別のものなのかはいろいろですが、とにかく、記入している帳票のほかに、ある一覧表があって、その一覧表で対応する内容を自動的に表示させるというものです。 もちろん、エクセルで実現する方法はありますし、そういう答しか出てきませんが、こんなのはアクセスを使えばいいんです。 他にも、重複したレコードの数を数えるとか、表Aと表Bを比較して重複してないレコードを抜き出すとか、とにかく、「表を作ってデータを整理する」という作業があれば、アクセスを使用することも考えた方がいいと思います。 上で書いた帳票Aと帳票Bというような場合も、アクセスが便利だと思います。同じデータを書式を変えて出力するという場合です。「同じデータをあっちこっちに何回も書いてるような気がするんだけど」と感じたら、アクセスでデータベースを作るとよい場合だと思います。 >独学で勉強し、一通り学ぶのにはどれくらい時間がかかるでしょうか? 私自身は、「勉強した」ということが全くありません。 仕事で使いながら覚えました。 エクセルの関数一覧表というのを昔買ったような覚えはありますが、ほかの本は買ったこと無いです。 エクセルやアクセス自身のヘルプも使いやすいですし、ググレばいくらでも解説が出てきます。 ただ、仕事では使う場面が無く、仕事とは別に使い方を練習するということであれば、課題の例を本か何かにもとめなければならないとは思います。 どんな本を買うかにもよるとは思いますが、3カ月もあれば何とかなるんじゃないでしょうか。 ただVBAは、プログラムのコードを書くことになりますから、「走ればいい」というレベルから上に行くには、もう少し時間がかかるかもしれません。

kimi1980
質問者

お礼

回答ありがとうございます。 3か月か目安とのこと、 頑張ります。

回答No.1

エクセルもアクセスもWindowsの機能と同じように、ユーザーの多様な作業目的に応じて多くの機能を用意しています。全般について説明している本を読むと、結局何に役立つのかわからなくなってしまうのはそのためです。 転職目的に学習したいのでしたら、希望転職先が一般事務なら基本操作の参考書を独学するだけで十分です。マクロなどは入社後からでもすぐ覚えます。 

kimi1980
質問者

お礼

回答ありがとうございます。