- 締切済み
VBAでエクセルの自動集計ができますか?
エクセルを利用してアンケートを作成しています。 具体的には、「コントロールツールボックス」の「チェックボックス」や「オプションボタン」などを利用して回答項目を作成し、 回収後に一括して集計・分析したいと考えています。 (回答対象者は100人程度ですので、集計を自動化したいと考えています) そこで質問なのですが、 ・複数のエクセルブックを対象に、上記のような回答の自動集計 を行うためには、VBAで可能でしょうか。 それともVBでないとできないでしょうか。 VBAとVBの違いもよく分かっていないので大変恐縮なのですが・・・ どうぞよろしくお願いします
- patekpatek
- お礼率0% (0/4)
- Visual Basic
- 回答数4
- ありがとう数0
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Quad66
- ベストアンサー率35% (7/20)
説明が前後しますが、VBAはExcelやAccessに搭載されている自動処理のためのプログラムのことです。開発環境を不要で、手軽な反面できる事が限られていますが、Excel上の処理で困ることはないでしょう。 VBはそれ自体独立したプログラムで、VisuakStudioなどの開発環境がないとプログラムは作れません。C#という兄弟的な言語があり、今はこちらの方が良く使いますが、VBはExcelとの相性がいいので手放せません。 VisuakStudio2008は3万ほどで購入でき、無料版もありますがやや制限されます。Webアプリの作成や、FLASH的なWPFも作れるので、持っていて損はないですよ。 ちなみに「ブックを開いたときにコンボボックスへ値をセット」とはクライアントが開いた時のことです。
- Quad66
- ベストアンサー率35% (7/20)
回答といいつつろくに回答してないものばかり・・。 ここではAccessVBAでExcelブックを開いてそこにあるコンボボックスの 値を取得する流れを説明します。コンボボックスへはブックを開いた 時アイテムを設定するとします。 ExcelブックのVBAを開き、 Private Sub Workbook_Open() Call Sheet1.setsru End Sub と書きます。そしてSheet1のcmb1という名を付けたコンボボックスには Public Sub setsru() cmb1.AddItem "テスト1" cmb1.AddItem "テスト2" End Sub とします。 ここからはAccseeのソースを張るので参考にしてください。調べれば わかると思いますよ。(レコードには最低1レコードあるとします) Accessのユーザーフォームにリストボックスを作り、そこに取り込むExcel一覧を表示させ、それらを1件1件開いて処理(テーブルに取り込んでゆく)していきます。 【テーブルに取り込むVBA】 Private Sub コマンド1_Click() On Err GoTo errTran Dim xlap As Excel.Application Dim xlSh As Excel.Worksheet Dim cn1 As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn1 = CurrentProject.Connection rs.Open "tbl1", cn1, adOpenKeyset, adLockOptimistic Dim cnt, cnt2 As Long Dim val1 As String cnt2 = DMax("key", "tbl1") + 1 Set xlap = CreateObject("Excel.Application") xlap.DisplayAlerts = False For cnt = 0 To list1.ListCount - 1 xlap.Workbooks.Open (list1.ItemData(cnt)) rs.AddNew Set xlSh = xlap.Workbooks(1).Worksheets(1) rs!Key = cnt2 val1 = xlSh.OLEObjects("cmb1").Object.Value rs!ank1 = val1 xlap.ActiveWorkbook.Close (False) Set xlSh = Nothing cnt2 = cnt2 + 1 Next rs.Update rs.Close cn1.Close xlap.DisplayAlerts = True xlap.Quit Set rs = Nothing Set cn1 = Nothing Set xlap = Nothing MsgBox "処理は終了でテーブルにデータ入れました", vbInformation, "" Exit Sub errTran: xlap.DisplayAlerts = True End Sub もちろんVBでもできますので、VB2008など勉強するのは悪くないですよ。
- imogasi
- ベストアンサー率27% (4737/17068)
エクセルVBAはエクセル向けの操作やオブジェクトのメソッド、プロパティが使えます。 エクセルでアンケート回答が出来上がる以上VBAで無いと出来ません。 ただし (1)アンケートがエクセルでやる必要が絶対か。否。 質問のようなのはVBでフォーム上にオプションボタンなど貼り付けても出来る。回答結果はcsvファイルにでもつくり、それらを集計する。この後にエクセルを使うことも出来る。 (2)VBを使っても、エクセルのVBAの機能(オブジェクト)を使いますと宣言すれば、使えるので、実質VBでやりましたといっても、エクセルVBAの世界に入らないといけない(エクセルの機能を使わないといけない) VBのステートメント・コード・関数だけで例えばエクセルの「セルの削除」などのプログラムを1から作れるわけが無い。 == 質問のようなのことをVBAでやろうとすると、良き指導者(教えてくれる人)が居ないと非常に難しい。 しかし世の中広くて、本を読んだだけで、今必要な機能だけだが、こなせる優れた人も居るようだ(他言語既習者などが多いのではと思うが)それと若さ(頭の柔軟性)でやってしまう人もあると思う。 しかし、旧い時代でもあったせいもあるが、数十年間で文系職場の私の周りにはVBA的なソフトをプログラムでいじくる人は出なかった。 好きでないとできない面がある。また独学では時間がかかり、知識など偏り、壁にぶつかる恐れも多い。 努力奮闘を強いられるとは思う。 == >チェックボックス」や「オプションボタン」などを利用して でも、正面のVBAを使わず、LinkedCell、FillListRangeなど使い、 セルと連動させ、エクセル関数を使って処理することは出来る。 その際のネックが100ブックのようなブックに分かれていることだ 。同じ表形式のシートを100個串刺し的集計する方法が無いか勉強したら。
- higekuman
- ベストアンサー率19% (195/979)
VBAで可能です。 頑張ってください。
関連するQ&A
- VBAのチェックボックス結果を集計したい
Excel上でVBAのチェックボックスやオプションボタンを使ったアンケートを作りました。 このアンケート結果(チェックボックスなどのオン・オフ)を集計したいのですが、回収件数が多いので、自動的に処理したいのです。 複数のExcelファイルが回収して集まってきます。 どのようなマクロやVBAを作ればよいか、教えて下さい。
- ベストアンサー
- Visual Basic
- VBAでExcelのBookの串刺し集計
VBAでExcelのBookの串刺し集計するにはどうすれば良いでしょうか? 同一フォルダ内のファイルをすべて集計したいと思っています。 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- エクセルでのチェックボックス利用について
エクセルを利用して、アンケート表を作成したいのですが、その際回答項目をチェックボックス形式にして、選択された内容を自動集計したいのですが、その作成手順を教えて下さい。
- ベストアンサー
- オフィス系ソフト
- エクセルでのアンケート表の集計方法
こんにちは。 リサーチ部門で仕事をしているのですが、この度ちょっとしたアンケートをチェックボックス形式でエクセルを利用して作成しました。 メールを利用して友人を中心に回答を収集したのですが、思った以上(100に以上)に集まり、プリントアウトして集計するにはおおくなりすぎました。 どなたか複数のエクセルファイルを同時に集計できる方法をご存知の方、教えて下さい。 ちなみに、設けたチェックボックスはどこのセルにもリンクはさせてません。
- 締切済み
- オフィス系ソフト
- エクセルの集計方法がわかりません。教えてください。
集計方法がわからなくて困っています。 エクセルを使ってアンケートを作成しました。 質問に対して「そう思う、思わない、どちらでもない」に丸を入力してもらう方式です。 質問の最後に集計欄を作り、カウント関数で、丸がついた数をカウントします。 200人から回答が返ってくる見込みで、その結果をまとめるのですが、 200あるエクセルのブックのカウント関数をどうやって合算するのがよいのかわかりません。 何か良い方法がありましたら、どんな事でも構いませんので、ぜひ宜しくお願い致します。
- ベストアンサー
- その他(生活・暮らし)
- 集計用のVBA
いつもお世話になります。 今回は、VBAを使った、ブック間での集計について教えてください。 現在、担当者別にExcelブックが15人分あります。(ブック名の定義は"ブック2012(担当者名).xlsx") そのブックには、D3~AH49までデータ(空白セルもあります)が記入されてあり、また月別Sheetが12カ月分存在します。 そして、集計用ブックが存在し、上記のブックと全く同じ配置で構成されています(セル、シート共) やりたいこと ・集計用ブックに、担当者ブックの合計を行いたい。 ・集計用ブックに新たなシートを付加し、そこで年度や担当者名を定義したい。また、そのSheetにコマンドボタンを設置し、そのボタンを押すと自動集計が始まるようにもしたい。 *上記の担当者ブック名の年度が変更されたり、担当者が増減しても、A1セルに2013、B列セルに 担当者を記入していけば、そのブックのみの集計を行ってくれる。 以上が、私のやりたい事で、このVBAを教えていただきたいのです。 皆様、どうかよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- アンケートの集計に便利な方法
アンケートの集計に便利な方法は、どんな方法がありますでしょうか? 分析ではなく、集まったアンケートデータを自動的に集計(1ファイルデータにする)する方法を探しています。対象は500人ぐらいなのですが、LAN上につながっています。 下のようなことを考えていますが、良い方法がどれかわからないのです。教えてください!よろしくお願いいたします。 (1)メールにアンケートを書いて返送してもらい、集計する ⇒集計ソフトはあるのでしょうか? そうしたソフトは、返信する人が > 記号を入れたり、少しカラムを変えたりしてもうまく集計してくれるのでしょうか? (2)メールでEXCELファイルを配って、回答を入力して返信してもらう ⇒帰ってきた500のEXCELファイルを簡単に束ねる方法はあるのでしょうか? (3)WEBベースでアンケートをして、集計する ⇒実は、とある都合で、そうしたアンケートサーバを設置できづらい状況なので、別の方法があればその方が嬉しいです。 よろしくお願いいたします。
- 締切済み
- その他(インターネット・Webサービス)
- エクセルアンケート集計&分析 マクロ
エクセルで書かれたアンケート結果を自動集計して 分析を簡単に行えるマクロを組みたいと考えています。 ファイルサーバー内の特定のフォルダ(\\Server1\enquete\)内にアンケートBook(*****.xls)が30個入っています。 アンケートbookには10枚のSheet(シート名はアンケート対象施設名)があります。 各アンケートSheetには、セルB2~B100に質問大分類、セルC2~C100に質問小分類、セルD2~D100に質問、セルE2~E100に評価点、セルF2~F100に評価者IDが記入されています。 ・対象施設 評価点順位 ・質問別平均点 ・評価点分布図 ・偏差値 ・平均点 などを分析したいと思います。 どのようなマクロの組み方が効率的と考えられますでしょうか? お詳しい方宜しくご教授ください。
- 締切済み
- その他(プログラミング・開発)
- エクセルの集計機能のマクロ
会社の従業員にアンケートをエクセルで送付し、所定の表に回答を入力してもらい、そのエクセルを全従業員(50人)から回収するということを実施しました。 回答フォームは以下の通りでして、同様のフォームに記入された回答が50個のエクセルファイルとして存在します。 配布されたエクセルのフォームは 従業員No. 質問1 質問2 1 ○ A といった横3列、縦1行の表となっています。 各人のフォームが同じですので、これを50人分自動集計できるマクロを作成したいと思っています。集計したいイメージは以下の通りです。 従業員No. 質問1 質問2 1 ○ A 2 × D 3 ○ C (間、省略) 50 × B 上記のように自動集計するマクロを作成したいのですが、どのようにプログラミングすればよいか分かりません。 いろいろなサイトを見ましたが、奈何せん初心者ですので理解できませんでした。 どなたか分かる方がいらっしゃいましたら、具体的なプログラムをご教授いただけませんか。
- 締切済み
- Windows系OS
- エクセルVBAについて
今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。
- ベストアンサー
- その他(プログラミング・開発)