Excel VBA質問箱 IV

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

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


1574 / 13644 ツリー ←次へ | 前へ→

【73406】オートフィル ミミ 13/1/5(土) 17:13 質問[未読]
【73413】Re:オートフィル UO3 13/1/5(土) 21:55 発言[未読]
【73414】Re:オートフィル UO3 13/1/5(土) 22:16 発言[未読]
【73415】Re:オートフィル ミミ 13/1/5(土) 22:48 質問[未読]
【73416】Re:オートフィル ミミ 13/1/5(土) 22:56 発言[未読]
【73417】Re:オートフィル UO3 13/1/6(日) 0:38 発言[未読]
【73418】Re:オートフィル UO3 13/1/6(日) 0:52 発言[未読]
【73419】Re:オートフィル UO3 13/1/6(日) 1:24 発言[未読]

【73406】オートフィル
質問  ミミ  - 13/1/5(土) 17:13 -

引用なし
パスワード
   =SUMIF(Jan!$A:$A,$C12,Jan!$B:$B)

合計を出したいシートでこのような数式をいれます。
シートはJan,Feb Marchと月ごとのものがあります。
上の数式がB2のセルに入っていてこれを横にオートフィルをして
Janの部分だけをFeb,Marchとシート別に変えて
自動的に合計を出すことはできますか?

【73413】Re:オートフィル
発言  UO3  - 13/1/5(土) 21:55 -

引用なし
パスワード
   ▼ミミ さん:

レスがつきませんねぇ。
質問です。

1.シート名は、必ずしも標準的な略称ではなく、たとえば March と
 フルスペルで入っているものもあるのですね?
 (表示書式 mmm で表示される標準的な略称ではないということなんですよね?)

2.式は

>=SUMIF(Jan!$A:$A,$C12,Jan!$B:$B)

 この式と決めていいのですか?それとも、どんな式が入るかわからないけど、その中の
 Jan 部分を 他のシート名にするということなんでしょうか?

3.上記の回答にもよりますが、B2〜 のセルには式を入れたいのですね?
 VBAですから、計算した値を入れることもできますが。

4.で、最後に。
 これをVBAでやるということですね?
 式を入れるのなら、面倒でも手で11回、置きかえをやればすむような気もしますが?

【73414】Re:オートフィル
発言  UO3  - 13/1/5(土) 22:16 -

引用なし
パスワード
   ▼ミミ さん:

式を入れて手作業でオートフィルすることでいいのなら
たとえば、B1 に Jan といれて、これを M1 までフィルコピー。
シート名が標準的な略称でないところのみ March 等で打ち替え。
B2には B1をINDIRECTで参照する式を入れて、これを M2 までフィルコピー。
これでもいけると思いますが?

【73415】Re:オートフィル
質問  ミミ  - 13/1/5(土) 22:48 -

引用なし
パスワード
   返信ありがとうございます。
シートは1月から12月までありすべて同じ形式でセールスの売り上げなどが
入っています。参照にする行はすべて同じです。
ということはJANのシート名のところをオートフィル機能で1月から12月まで
自動的に変えることはできないということですか?

【73416】Re:オートフィル
発言  ミミ  - 13/1/5(土) 22:56 -

引用なし
パスワード
   シート名ですが、Jan,Feb,Mar、Apr・・・と入れています。(MARCH)は間違いです。

【73417】Re:オートフィル
発言  UO3  - 13/1/6(日) 0:38 -

引用なし
パスワード
   ▼ミミ さん:

>シート名ですが、Jan,Feb,Mar、Apr・・・と入れています。(MARCH)は間違いです。

了解です。

>JANのシート名のところをオートフィル機能で1月から12月まで自動的に変えることはできないということですか?

えぇっと・・・
いくつか、うまく伝わっていないポイントがあるようですね。

・まず、単純な(人間の操作による)オートフィルでは、式の中のJanはいくらひっぱっても
 Janのままですよね。これは確かめておられますよね。
・もちろん、ここをVBAで変更するのはできますよ。
・ただ、本当にVBAでやるのですかと、そうお聞きしています。
 VBAでやるにしても11個の式をセットするだけなんですよね?
・であれば、関数で対処されてもよろしいのでは?
 このように申し上げました。
・単純なオートフィルではできないわけですが、たとえば B1 にJanといれる。
 これを右にフィルコピーしますと Feb Mar Apr ・・・ となります。
・で、この Jan や Feb は 日付を Text関数で "mmm" で加工したものと同じ値です。
・これを利用して、2行目に1行目の値をINDIRECT関数で参照する式をつかえば
 ご要望のことができますよねと、そう申し上げました。

★そういうことは先刻承知で、でもVBA処理をしたいということなら
 お手伝いは(もちろん)しますが。

【73418】Re:オートフィル
発言  UO3  - 13/1/6(日) 0:52 -

引用なし
パスワード
   ▼ミミ さん:

一応コードをアップしておきますね。

Sub Sample()
  Dim m As Long
  Dim mV As Variant
  Dim shn As String
  
  mV = Split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
  For m = 1 To 12
    shn = mV(m - 1)
    Cells(2, m + 1).Formula = "=SUMIF(" & shn & "!$A:$A,$C12," & shn & "!$B:$B)"
  Next
  
End Sub

【73419】Re:オートフィル
発言  UO3  - 13/1/6(日) 1:24 -

引用なし
パスワード
   ▼ミミ さん:

関数処理案も。
(上でコメントした B1等の1行目は使いません)

B2 : =SUMIF(INDIRECT(TEXT(DATEVALUE("2013/"&COLUMN(A1)&"/1"),"mmm")&"!$A:$A"),$C12,INDIRECT(TEXT(DATEVALUE("2013/"&COLUMN(A1)&"/1"),"mmm")&"!$B:$B"))

これをM2 までオートフィル。

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