[[20150410143349]] 『集計方法』(さちこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『集計方法』(さちこ)

教えてください。下記はEXCEL関数またはマクロで集計は可能でしょうか?
50ファイルほどあるEXCELで下記集計をしたいです。
1.は四角をクリックするとチェックがつきます。その集計をしたいです。
チェックボックスを集計する方法はありますか?
2.は画像があり、下のセルに好きなように並べてもらいます。
どれが一番人気かを集計したいです。(1は人気が高い、5は人気がない)
画像を配置することで集計は可能でしょうか?

1.アンケート
年齢 □29歳以下 □30代 □40代 □50代 □60歳以上

2.5つ画像があります。
(ここに画像を5つはる)

図 図 図 図 図

下の1〜5に好きな順に選んで貼り付けしてください
1  2  3  4  5
図 図  図  図  図

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 「ファイル」とは「別ブック」ですか「同一ブックの別シート」ですか?

(β) 2015/04/10(金) 15:58


ファイルは1つづつ別ファイルです。
宜しくお願いします。

(さちこ) 2015/04/10(金) 16:09


 先に進むにあたって、いくつか確認お願いできますか?

 1.アンケートの各ブックのシート名は決まっていますか?それとも、シート名はブックごとに異なるけど1枚目のシートといった特定はできますか?
 2.画像もアンケート用紙にあるのですか?それとも別のところですか?(別のブック?別のシート?)
 3.年齢アンケートのチェックボックスは フォームコントロールですか?ActiveXコントロールですか?
 4.年齢アンケートのチェックボックスのそれぞれのコントロール名は、各ブック共通ですか?
   また、なんというコントロール名ですか?
 5.チェックボックスということは、いくらでも複数選択できるわけですが、その場合どうしますか?
   (複数から1つ選ぶ オプションボタンもありますが、チェックボックスなんですよね?)
 6.図の名前は決まっていますか?
 7.元の5つの図、貼り付け後の図、それぞれの位置は決まっていますか?
 8.図が存在するシート上には、この5つの図と、その中から選んで貼り付けた1つの図、合計6つの図以外に、図はありませんね?

(β) 2015/04/11(土) 09:23


 もうすでに回収したファイルの集計のお話でしょうか。
 それともこれからアンケートを作成するお話でしょうか。

 これからのお話であれば、もう少しやり方を考えても良い気がします。
 現行の形だと、回答する人も集計する人も大変ではないでしょうか。

 アンケートは、どういった場で行うのですか?
 みんながエクセル(画像のコピペなどPC操作)を使い慣れた人なのでしょうか?
 どのくらいの人数のアンケートをとる予定なのでしょうか?

(Mook) 2015/04/11(土) 14:04


これから行うアンケートです。
Excelをメールで知り合い送り、アンケートします。
イメージは図が5つあってそれを下の四角いわくを作った中に移動してもらう。

 1.アンケートの各ブックのシート名は決まっていて、一枚目のsheet1です。
 2.画像も同じシート内にあります。
 3.年齢アンケートのチェックボックスはActiveXコントロールで作りました。
 4.年齢アンケートのチェックボックスのそれぞれのコントロール名は、各ブック共通です。
   □29歳以下 CheckBox2_Click
   □30代   CheckBox3_Click
   □40代   CheckBox4_Click
   □50代   CheckBox5_Click
   □60歳以上 CheckBox6_Click
 5.チェックボックスということは、いくらでも複数選択できるわけですが、その場合どうしますか?
   (複数から1つ選ぶ オプションボタンもありますが、チェックボックスなんですよね?)
   チェックした数を足したいので、複数も可としたいです。
   ほかにも4のようなチェックボックスがあります。
   複数ある場合のやり方も教えてほしいです。
 6.図の名前は決まっていますか?
   jpeg名が決まっています。
   図1.jpeg 図2.jpeg・・・図5.jpeg
 7.元の5つの図、貼り付け後の図、それぞれの位置は決まっていますか?
   5つの図を同シートのセルに移動するイメージです。それぞれの位置は決まっています。
   A38からB44までセル結合、B38からD44まで結合これが右に5つあるイメージです。
 8.図が存在するシート上には、5つの図があります。これを下の図に移動します。
   また、同様にその下に10この図がありそれも1から10に好きな順番に移動します。
  それぞれ画像の名前は違います。
   

(さちこ) 2015/04/13(月) 13:01


 回答をもらっていたのを見過ごしていました。ごめんなさい。

 最終的には Mookさんご指摘のように、アンケートブック側で、回答者が回答しやすいというか、間違いのない回答をする
 そのためのサポートの仕組みも準備したらよろしいかと思いますが、とりあえず、集計ブック側だけで集計処理を行います。

 ・アンケートブック「だけ」を保存したフォルダを用意してください。以下のコードでは、デスクトップ上の"Test" という名前にしてあります。
 ・このコードはサンプルとして、図1.jpeg〜図5.jpeg のそれぞれの人気を、A列〜E列に、1行目が1番人気の数、2行目が2番人気の数、・・・
  というように、その結果を、落とし込みます。
  (移動先を、A38からB44、C38からD44、・・・・としています)

  また、10行目に、CheckBox2〜CheckBox6のそれぞれのチェックの数を落とし込みます。

 これは、最終形ではありません。最終形は、このデータを基にして分析した結果を編集してレポーティングすることに
 なると思いますが、まずは、集計のサンプルとして。

 Sub Sample()
    Dim shA As Worksheet
    Dim shT As Worksheet
    Dim pic As Shape
    Dim pnm As Variant
    Dim posPic As Range
    Dim tl As Variant
    Dim ansPic1(1 To 5, 1 To 5) As Long
    Dim ansChk1(1 To 5) As Long
    Dim i As Long
    Dim j As Long
    Dim ck As Object
    Dim ckn As Variant
    Dim fPath As String
    Dim fName As String

    Application.ScreenUpdating = False

    'アンケートブックフォルダ
    fPath = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\Test\"
    '集計シート
    Set shT = ThisWorkbook.Sheets("Sheet1")

    fName = Dir(fPath & "*.xls*")

    Do While fName <> ""

        Set shA = Workbooks.Open(fPath & fName).Sheets("Sheet1")

        j = 0
        For Each pnm In Array("図1.jpeg", "図2.jpeg", "図3.jpeg", "図4.jpeg", "図5.jpeg")
            Set posPic = shA.Shapes(pnm).TopLeftCell
            j = j + 1
            i = 0
            For Each tl In Array("A38:B44", "C38:D44", "E38:F44", "G38:H44", "I38:J44")
                i = i + 1
                If Not Intersect(posPic, shA.Range(tl)) Is Nothing Then ansPic1(i, j) = ansPic1(i, j) + 1
            Next
        Next

        i = 0
        For Each ckn In Array("CheckBox2", "CheckBox3", "CheckBox4", "CheckBox5", "CheckBox6")
            i = i + 1
            If shA.OLEObjects(ckn).Object.Value Then ansChk1(i) = ansChk1(i) + 1
        Next

        shA.Parent.Close False

        fName = Dir()

    Loop

    shT.Range("A1").Resize(5, 5).Value = ansPic1

    shT.Range("A10").Resize(, 5) = ansChk1

 End Sub

(β) 2015/04/17(金) 22:06


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.