【500ポイント♪】


MS-Excelで以下の集計をし、結果を求めていただけないでしょうか?
(苦手故にまる投げですいません)

http://pub.idisk-just.com/fview/ynkl7T7BjCctAJ_w2DHwfi163kAmg8okhXY4jgJNoOdbOQ-NciB8cA?
ここに圧縮されたファイルがあります。
解凍して見てもらえばわかると思うのですが、23859レコードあるデータの「個数」の集計をしたいです。
表が12個あり、空白セルに該当の個数がわかるように数値を入れればOK!

タイプ別、フラグ別、府県別、日にち(月)別
にいくつあるのかな〜というのを知りたいのです。

求めているのは「数値」なんですが、セルには関数を用いて算出した形跡を残したままにしてほしく、かつ完成したファイルを、ここからDLして下さい〜みたいな感じで提示いただければ嬉しいです。

上記リクエストが満足されている最初の方に、少ないですが500Pを贈らさせてください!

どうぞよろしくお願い致します!!

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:bmkage No.1

回答回数55ベストアンサー獲得回数0

ポイント16pt

http://www.hatena.ne.jp/1116665491#ダミー:detail]

ワークシートファイルを見たのですが

表の

ABC

DEF

GHI

JKL


A・D・G・Jはいいんですけど

B・E・H・Kはどれも「タイプ=MS1でフラグ=2」であればOK

C・F・I・Lはどれも「フラグ=3」であればOK


と集計条件がダブっていませんか?

id:perishable

すいません、その通りです!

本当にごめんなさい!15分以内に修正版をアップします!

2005/05/21 19:42:24
id:himami No.2

回答回数54ベストアンサー獲得回数0

ポイント500pt

あまりに計算に時間がかかったため、1列追加しました。

だめならいいです。


ついでに表の左から3つめのならびもちょっといじりました。


ちょっとしたら消します。

id:perishable

ありがとう!

見ました。(が、たまにフリーズしてしまいます。再計算が耐えられないのかな?)

見た感じではよいようですので、あなた様に500P贈ろうと思います。

本当にありがとう。

実は、表で、おかしいところがありましたので、修正版をアップしました。

タイプ3というのは存在しないため、タイプ0への修正です。

また、もう一人、贈る方をお待ちいたします。

回答が満足できれば、500Pその方にも贈ろうと思います。

引き続きどうぞよろしくお願い致します。

2005/05/21 19:57:53
id:JunK No.3

回答回数707ベストアンサー獲得回数18

ポイント500pt

MS1,MS2,M41,M42 × 0,1,2 = 12個の表(都道府県,年月)という事で、算出してみました。


ひたすらIF関数で場合分けして、SUM関数で集計しています。再計算にはやたら時間がかかりますのでご注意下さい。


ぱっと見た感じでは、回答者2.の方のと、条件が同じ箇所は、同じ値になっているようです。

id:perishable

ありがとう!!

2005/05/21 22:20:44
id:cx20 No.4

回答回数607ベストアンサー獲得回数108

ポイント100pt

http://support.microsoft.com/kb/257819/ja/

[HOWTO] Visual Basic または VBA から ADO を Excel データで使用する

なんとなく VBScript 版(ADO + Excel)を作ってみました。


g_target と g_output の箇所を修正して、

コマンドラインから

C:¥>cd C:¥home¥edu¥hatena¥perishable¥1116665491

C:¥home¥edu¥hatena¥perishable¥1116665491>CScript CalcData.vbs

と実行すると CSV ファイルが出来上がります。


(Excel ファイルを更新してもいいんですが、面倒なのでやめました。)


’ CalcData.vbs

’ Usage : CScript CalcData.vbs

Option Explicit


Const g_target = ”C:¥home¥edu¥hatena¥perishable¥1116665491¥q.xls” ’ 計算対象データ

Const g_output = ”C:¥home¥edu¥hatena¥perishable¥1116665491¥result.csv” ’ 出力先


’ 処理の実行

CalcData


Sub CalcData()

  Dim typeName

  typeName = ””

  Dim typeNames(3) ’ (0 To 3)

  typeNames(0) = ”MS1”

  typeNames(1) = ”MS2”

  typeNames(2) = ”MS41”

  typeNames(3) = ”MS42”

  

  Dim flag

  flag = 0

  Dim flagArray(2) ’ (0 To 2)

  flagArray(0) = 1

  flagArray(1) = 2

  flagArray(2) = 3

  

  Dim areaName

  areaName = ””

  Dim areaNames(29) ’ (0 To 29)

  areaNames(0) = ”愛知”

  areaNames(1) = ”静岡”

  areaNames(2) = ”岐阜”

  areaNames(3) = ”三重”

  areaNames(4) = ”石川”

  areaNames(5) = ”富山”

  areaNames(6) = ”福井”

  areaNames(7) = ”大阪”

  areaNames(8) = ”京都”

  areaNames(9) = ”兵庫”

  areaNames(10) = ”奈良”

  areaNames(11) = ”滋賀”

  areaNames(12) = ”和歌山”

  areaNames(13) = ”広島”

  areaNames(14) = ”鳥取”

  areaNames(15) = ”島根”

  areaNames(16) = ”岡山”

  areaNames(17) = ”山口”

  areaNames(18) = ”愛媛”

  areaNames(19) = ”香川”

  areaNames(20) = ”徳島”

  areaNames(21) = ”高知”

  areaNames(22) = ”佐賀”

  areaNames(23) = ”長崎”

  areaNames(24) = ”熊本”

  areaNames(25) = ”大分”

  areaNames(26) = ”宮崎”

  areaNames(27) = ”鹿児島”

  areaNames(28) = ”沖縄”

  areaNames(29) = ”福岡”


  

  Dim yymmTerm

  yymmTerm = ””

  Dim yymmTerms(10) ’ (0 To 10)

  yymmTerms(0) = ”2004/07”

  yymmTerms(1) = ”2004/08”

  yymmTerms(2) = ”2004/09”

  yymmTerms(3) = ”2004/10”

  yymmTerms(4) = ”2004/11”

  yymmTerms(5) = ”2004/12”

  yymmTerms(6) = ”2005/01”

  yymmTerms(7) = ”2005/02”

  yymmTerms(8) = ”2005/03”

  yymmTerms(9) = ”2005/04”

  yymmTerms(10) = ”2005/05”

  

  Dim nCount

  nCount = 0

  Dim strLine

  For Each typeName In typeNames

    For Each flag In flagArray

      For Each areaName In areaNames

        strLine = typeName & ”,” & flag & ”,” & areaName

        For Each yymmTerm In yymmTerms

          nCount = GetItemCount(typeName, flag, areaName, yymmTerm)

          strLine = strLine & ”,” & nCount

        Next

        DebugPrint strLine

      Next

    Next

  Next


End Sub


Function GetItemCount(typeName, flag, areaName, yymmTerm)

  Dim cn ’ As ADODB.Connection

  Set cn = CreateObject(”ADODB.Connection”)

  

  With cn

    .Provider = ”Microsoft.Jet.OLEDB.4.0”

    .ConnectionString = ”Data Source=” & g_target & ”;” & _

     ”Extended Properties=Excel 8.0;”

    .Open

  End With

    

  Dim strQuery

  ’strQuery = ”SELECT COUNT(*) FROM [Sheet1$A1:E23860] WHERE ”

  strQuery = ”SELECT COUNT(*) FROM [Sheet1$] WHERE ” & _

    ”タイプ=’” & typeName & ”’ AND ” & _

    ”フラグ=” & flag & ” AND ” & _

    ”都道府県=’” & areaName & ”’ AND ” & _

    ”YEAR(日にち) = ” & Year(yymmTerm) & ” AND MONTH(日にち) = ” & Month(yymmTerm)


  Dim rs

  Set rs = CreateObject(”ADODB.Recordset”)

  Set rs = cn.Execute(strQuery)

  Dim nCount

  nCount = rs(0)

  

  rs.Close

  cn.Close

  

  GetItemCount = nCount

End Function


Sub DebugPrint(strMessage)

  Dim debug_file

  debug_file = g_output

  

  Const ForReading = 1, ForWriting = 2, ForAppending = 8

  Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

  Dim fso, f, ts

  Set fso = CreateObject(”Scripting.FileSystemObject”)

  

  If Not fso.FileExists(debug_file) Then

    fso.CreateTextFile debug_file  ’ Create a file.

  End If

  

  Set f = fso.GetFile(debug_file)

  ’Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

  Set ts = f.OpenAsTextStream(ForAppending, TristateUseDefault)

  ts.WriteLine strMessage

  ts.Close

End Sub


ただ、ものすごく重いです(自分の PC で 10 分くらい)

かなり最適化の余地はありますが、とりあえずソースコードの見やすさ重視で

作ってみました。

http://e-words.jp/w/CSV.html

CSVとは 【カンマ区切り】 (Comma Separated Values) ─ 意味・解説 : IT用語辞典 e-Words

実行結果です。


MS1,1,愛知,0,0,0,0,0,0,0,0,0,0,0

MS1,1,静岡,0,34,143,0,0,0,20,172,0,0,0

MS1,1,岐阜,0,4,225,98,0,3,0,0,2,0,0

MS1,1,三重,0,41,106,4,12,22,0,0,0,0,0

MS1,1,石川,0,0,0,0,0,0,0,0,0,0,0

MS1,1,富山,0,0,0,0,0,0,0,0,0,0,0

MS1,1,福井,0,0,0,0,0,0,0,0,0,0,0

MS1,1,大阪,393,73,0,0,324,42,0,0,0,0,0

MS1,1,京都,0,69,212,132,0,19,0,0,0,0,0

MS1,1,兵庫,0,69,228,76,476,0,0,0,77,0,0

MS1,1,奈良,0,0,0,0,0,0,0,0,0,0,0

MS1,1,滋賀,0,0,0,0,0,0,0,0,0,0,0

MS1,1,和歌山,0,0,0,0,0,0,0,0,0,0,0

MS1,1,広島,45,92,115,74,23,5,0,0,0,0,0

MS1,1,鳥取,0,0,0,0,0,0,0,0,0,0,0

MS1,1,島根,0,0,0,0,0,0,0,0,0,0,0

MS1,1,岡山,0,194,464,43,0,0,0,0,25,0,0

MS1,1,山口,0,13,110,59,51,7,87,98,0,0,0

MS1,1,愛媛,0,6,243,306,0,7,87,49,186,0,0

MS1,1,香川,0,0,0,0,0,0,0,0,0,0,0

MS1,1,徳島,0,0,0,0,0,0,0,0,0,0,0

MS1,1,高知,0,0,0,0,0,0,0,0,0,0,0

MS1,1,佐賀,0,0,0,0,0,0,0,0,0,0,0

MS1,1,長崎,0,0,0,0,0,0,0,0,0,0,0

MS1,1,熊本,0,0,88,131,0,0,0,0,0,0,0

MS1,1,大分,0,0,0,0,0,0,0,0,0,0,0

MS1,1,宮崎,0,0,0,0,0,0,0,0,0,0,0

MS1,1,鹿児島,0,1,50,201,135,77,14,218,430,0,0

MS1,1,沖縄,0,0,7,27,0,0,0,0,0,0,0

MS1,1,福岡,0,0,221,480,615,0,0,4,0,0,0

MS1,2,愛知,0,0,0,0,0,0,0,0,0,0,0

MS1,2,静岡,0,0,0,0,0,0,0,0,0,0,0


   :

  (中略)

   :


MS42,3,長崎,0,0,0,0,0,0,0,0,0,0,0

MS42,3,熊本,0,0,0,0,0,0,0,0,0,0,0

MS42,3,大分,0,0,0,0,0,0,0,0,0,0,0

MS42,3,宮崎,0,0,0,0,0,0,0,0,0,0,0

MS42,3,鹿児島,0,0,0,0,0,0,0,0,0,0,0

MS42,3,沖縄,0,0,0,0,0,0,0,0,0,0,0

MS42,3,福岡,0,0,0,0,0,0,0,0,0,0,0

id:perishable

ありがとう!

2005/05/21 22:21:22
id:alg-lj No.5

回答回数32ベストアンサー獲得回数1

ポイント100pt

himamiさんとは違うやり方ですが、どうでしょうか。

(このファイルは少ししたら消します)

id:perishable

皆様、貴重なお時間いただきまして、ありがとう!! 皆さん完璧でしたよー。お礼は、500Pを早いおふたりに!

2005/05/21 22:25:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません