Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22015 / 76734 ←次へ | 前へ→

【60105】Re:年間月別合計の出し方
発言  kanabun  - 09/1/27(火) 15:56 -

引用なし
パスワード
   ▼ひかる さん:
>▼kanabun さん:
>穴埋め問題で助け舟まで出していただき言葉もありません。ありがとうございます。
>それで、とりあえず穴は埋めさせていただきました。
>これで実行して、結果も得られました。ありがとうございました。

>コードの中で質問なのですが、
>1点目は、集計テーブルのA列とB列見出しの結合のところですが、
>If Len(c(1,0).text) then ・・・・のc(1,0)なのですが、
>私は、この場合男の横が大人だと思ったのでc(0,-1)と思ったのですが、
>どうしてこうなるのでしょうか。

c(1, 0) は c.Item(1, 0) の省略記法です。

セルc は、具体的には
>For Each c In r.Resize(, 1).Offset(, -1) 'B列見出し項目でLoop
とありますから、集計表が以下のようなとき、                       
>    A     B     C      D     E  ...........
> 1            4月     5月    6月  ...........
> 2  大人   男
> 3       女
> 4  小人   男
> 5       女

cは、正味集計範囲 r([C2]セルから12列 5行目までの範囲)を
Resize(, 1) で C列だけの1列にリサイズして、
Offset(, -1) で左方向に1列シフトした列、すなわち B列のことに
なります。
>For Each c In r.Resize(, 1).Offset(, -1) 'B列見出し項目でLoop
で、最初のc は 具体的には [B2]セルです。
c が [B2]セルのとき、c.Item(1,1) は [B2]セルそのもので、
c.Item(1, 0) は [B2]のひとつ左のセル すなわち [A2]セル
ということになります。
同様に、cが[B2]のとき、
c.Item(0,1) といえば [B2]のひとつ上の行 すなわち [B1]セル、
c.Item(2,1) といえば [B2]のひとつ下の行 すなわち [B3]セル
を示すことになります。
結局、この一行は↓

> If Len(c(1, 0).Text) Then strFirst = c(1, 0).Text 'A列文字列

cのひとつ左のセルのテキストが書きこまれていたら、
変数strFirst に そのテキスト(たとえば「大人」)を代入し、
何も書きこまれていなければ strFirstの内容は変更しない、
という処理をしているわけです。


>2点目は、配列変数に A列日付データを格納するところですが、
>MonData = rr.rr.Offset(, -3).Resize(, 1).Valueの.Resize(,1)
>なのですが、Resize(,1)の1は、なぜ1なのですか。
>ほしいのはMonDataだから、日付の入っている分が重要で
>これにはあまり意味がないということでしょうか。

rr がひとつ多いですね?
 MonData = rr.Offset(, -3).Resize(, 1).Value
ということでは?
これも、質問1 でお答えしたとおりです。
範囲を 左に3列オフセットして、1列だけにResize する
ということをしているから、A列だけが取り出されるわけです。


>>'◆これより 集計表のレイアウトの取得
>>  '書きこみ先(集計表)表範囲を変数r にセットしてください
       ◆ここは↓?
>>  Set r = WS2.             '書きこみ先表範囲
>>  Set r = Intersect(r,r.Offset(1, 2))
            ↑OK です
>>  tbl = r.value   'クリア後の範囲を配列に格納してください
      '↑◆OK です

>>  i = 0
>  For Each c In r.Resize(1).Offset(-1) '1行目見出し項目(◆年月)
>    ss = Format$(c.Value, "yyyy/mm")
>    i = i + 1
>    dic(ss) = i
>  Next        '↑◆OK です
>>   '--------------------------------------------------------

>>  Set rr = Intersect(rr, rr.Offset(1, 3))
      '↑◆OK です

>>
>>  '配列変数に A列日付データを格納してください
>>  MonData = rr.rr.Offset(, -3).Resize(, 1).Value   'A列
       '↑◆rr がひとつ多い です

ざっとしかチェックしてませんが、
短時間のうちによく理解されましたね(^^


あと、
ファイルサイズがどんどん大きくなる問題ですが、

> 最初、ファイルの容量(もちろんExcel)が、3Mほど(これでも大きいと
> 思うのですが)だったのが、つかっているうちに(最も新たな保存で
> 少しは、増えてい> くのですが、)18Mや19Mにまでなるのですが、
> これは、大きすぎませんか。

この問題は マクロ付きのExcelファイルによくある現象です。
ht tp://peiyorin.cocolog-nifty.com/blog/2007/09/excel_1635.html
などに、原因と解決方法が書いてありますので、いちど読んでみて
ください。
Bookにマクロがついていて、そのマクロを修正して保存するということ
を繰り返すから、肥大化するわけですから、根本的な解決法としては
データBookとマクロBookを分離することです。
そうすれば、他の人に使ってもらうときでも、いつも最新バージョンの
マクロBookを配布すればいいわけですから。
具体的な方法が分からないときは、これは一つのトピックですので、
スレッドを改めてご質問なさるといいかもしれませんね。

6 hits

【59849】年間月別合計の出し方 ひかる 09/1/13(火) 20:39 質問
【59850】Re:年間月別合計の出し方 kanabun 09/1/13(火) 21:18 発言
【59855】Re:年間月別合計の出し方 ひかる 09/1/13(火) 22:47 質問
【59856】Re:年間月別合計の出し方 kanabun 09/1/14(水) 0:09 発言
【59857】Re:年間月別合計の出し方 kanabun 09/1/14(水) 0:15 発言
【59858】Re:年間月別合計の出し方 ひかる 09/1/14(水) 7:07 お礼
【59859】Re:年間月別合計の出し方 kanabun 09/1/14(水) 9:33 発言
【59886】Re:年間月別合計の出し方 ひかる 09/1/15(木) 16:07 質問
【59887】Re:年間月別合計の出し方 ひかる 09/1/15(木) 16:21 お礼
【59892】Re:年間月別合計の出し方 kanabun 09/1/15(木) 16:51 発言
【59949】Re:年間月別合計の出し方 ひかる 09/1/20(火) 18:29 質問
【59950】Re:年間月別合計の出し方 kanabun 09/1/20(火) 20:25 発言
【59954】Re:年間月別合計の出し方 ひかる 09/1/20(火) 21:35 質問
【59955】Re:年間月別合計の出し方 kanabun 09/1/20(火) 21:49 発言
【59956】Re:年間月別合計の出し方 ひかる 09/1/20(火) 22:09 質問
【59957】Re:年間月別合計の出し方 kanabun 09/1/20(火) 22:50 発言
【59958】Re:年間月別合計の出し方 kanabun 09/1/20(火) 23:04 発言
【59959】Re:年間月別合計の出し方 kanabun 09/1/20(火) 23:31 発言
【59960】Re:年間月別合計の出し方 ひかる 09/1/20(火) 23:42 お礼
【59981】Re:年間月別合計の出し方 ひかる 09/1/22(木) 12:02 お礼
【59983】Re:年間月別合計の出し方 ひかる 09/1/22(木) 12:52 質問
【59988】Re:年間月別合計の出し方 ひかる 09/1/22(木) 18:07 質問
【60025】Re:年間月別合計の出し方 kanabun 09/1/24(土) 10:35 発言
【60026】Re:年間月別合計の出し方 kanabun 09/1/24(土) 10:40 発言
【60036】Re:年間月別合計の出し方 ひかる 09/1/24(土) 19:18 お礼
【60054】Re:年間月別合計の出し方 ひかる 09/1/26(月) 11:50 質問
【60061】Re:年間月別合計の出し方 kanabun 09/1/26(月) 14:39 発言
【60097】Re:年間月別合計の出し方 ひかる 09/1/27(火) 12:42 お礼
【60105】Re:年間月別合計の出し方 kanabun 09/1/27(火) 15:56 発言
【60106】Re:年間月別合計の出し方 ひかる 09/1/27(火) 16:27 お礼
【59889】Re:年間月別合計の出し方 kanabun 09/1/15(木) 16:48 発言

22015 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free