人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【500ポイント♪】

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

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

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

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

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

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

●質問者: perishable
●カテゴリ:コンピュータ
✍キーワード:DL Excel MS セル タイプ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● bmkage
●16ポイント

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


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

◎質問者からの返答

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

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


2 ● himami
●500ポイント

http://pub.idisk-just.com/fview/YMoNOumR4-vR3WjnF3zUYub3H6ol8PpW...

警告-InternetDisk

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

だめならいいです。


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


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

◎質問者からの返答

ありがとう!

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

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

本当にありがとう。

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

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

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

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

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


3 ● JunK
●500ポイント

http://investment.seesaa.net/files/A.xls

シーサー株式会社

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


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


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

◎質問者からの返答

ありがとう!!


4 ● cx20
●100ポイント

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

◎質問者からの返答

ありがとう!


5 ● alg-lj
●100ポイント

http://alg.at.infoseek.co.jp/qa.zip

infoseek isweb

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ