Excel VBA質問箱 IV

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

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


5901 / 13645 ツリー ←次へ | 前へ→

【48101】条件付で累計したいのですが。 けいこ 07/4/3(火) 21:05 質問[未読]
【48113】Re:条件付で累計したいのですが。 りん 07/4/4(水) 7:27 発言[未読]
【48127】Re:条件付で累計したいのですが。 けいこ 07/4/4(水) 20:57 質問[未読]
【48148】Re:条件付で累計したいのですが。 りん 07/4/5(木) 8:36 発言[未読]
【48244】Re:条件付で累計したいのですが。 けいこ 07/4/9(月) 21:58 発言[未読]
【48278】Re:条件付で累計したいのですが。 りん 07/4/11(水) 8:52 発言[未読]
【48293】Re:条件付で累計したいのですが。 けいこ 07/4/11(水) 23:32 発言[未読]

【48101】条件付で累計したいのですが。
質問  けいこ  - 07/4/3(火) 21:05 -

引用なし
パスワード
   こんばんは。
ぜひお力をおかしください!

ブック1

     A列 B列 C列 D列 E列 F列
     4月 5月  6月 7月 8月 9月
売上   100 200 300 400 500 600
実働費用 50  180 250 360 460 550


ブック2

     A列 B列 C列 D列 E列 F列
     4月 5月  6月 7月 8月 9月
売上    0  200  0  0  0  700
実働費用  50  130  100 300 100 80


上記のようなブックがあります。

別ブックに以下の条件で転記、累計したいのですが
方法が浮かばずにいます。

条件
・売上がある月はゼロにする。
・売上がない月は累計を出す(売上が上がるまで)


結果的には・・下記ブック3のようにしたいのです。
 
 A列    B列 C列  D列  E列 F列 G列
      4月  5月  6月 7月 8月 9月
ブック1  0   0    0  0  0   0 

ブック2  50  0  100  400 500  0

ブック2で説明すると
4月は売上がないので50を入力。
5月は売上が上がったので0で入力。
6月は売上がないので100のみ入力。
7月も売上がないので100+300で400を入力。
8月も同様100+300+100で500を入力。
9月は売上が上がったので0で入力。

ツケの帳簿のような感じです。
何かいい案があれば教えてください。
お願いいたします。


今は、こんな風にしかできていません・・
例で、4月を探し出し、そのこのセルの下の数字が0より
大きければブック3のB3に0を入力、0より大きくなければ
その数値を転記する形までになっています。

sub comp()
dim status as variant
dim str1 as string

with workbooks("book1").worksheets("Sheet1").range("A2:F2")
  set status=.find(what:="4月",lookin:=xlvalues)
  if not status is nothing then
   str1=status.offset(1).value
   if str1>0 then
     workbooks("book3").worksheets("Sheet1").range("B3").value="0"
   else
     workbooks("book3").worksheets("Sheet1").range ("B3").value _
                 =status.offset(2).value
   end if
  end if
end with
end sub

【48113】Re:条件付で累計したいのですが。
発言  りん E-MAIL  - 07/4/4(水) 7:27 -

引用なし
パスワード
   けいこ さん、おはようございます。

>ブック2
>
>     A列 B列 C列 D列 E列 F列
>     4月 5月  6月 7月 8月 9月
>売上    0  200  0  0  0  700
>実働費用  50  130  100 300 100 80
>条件
>・売上がある月はゼロにする。
>・売上がない月は累計を出す(売上が上がるまで)

売り上げが2行目、実働費用が3行目、4月がA列として、
[A4]=IF(A2=0,A3,0)   '前月がないので参照のみ
[B4]=IF(B2=0,B3+A4,0) '累計していく
B4をF4までコピー

これでお望みの値は求められます。

なので、こんな計算方法で値は出ます。

  Dim dt(0 To 6) As Long
  For II% = 1 To 6
   If Cells(2, II%).Value = 0 Then
     dt(II%) = dt(II% - 1) + Cells(3, II%).Value '累計する
   Else
     dt(II%) = 0 '0
   End If
   'こんな合計値
   MsgBox dt(II%)
  Next

【48127】Re:条件付で累計したいのですが。
質問  けいこ  - 07/4/4(水) 20:57 -

引用なし
パスワード
   ▼りん さん:
お返事、ありがとうございます!

>
>>ブック2
>>
>>     A列 B列 C列 D列 E列 F列
>>     4月 5月  6月 7月 8月 9月
>>売上    0  200  0  0  0  700
>>実働費用  50  130  100 300 100 80
>>条件
>>・売上がある月はゼロにする。
>>・売上がない月は累計を出す(売上が上がるまで)
>
>売り上げが2行目、実働費用が3行目、4月がA列として、
>[A4]=IF(A2=0,A3,0)   '前月がないので参照のみ
>[B4]=IF(B2=0,B3+A4,0) '累計していく
>B4をF4までコピー
>
>これでお望みの値は求められます。
>
>なので、こんな計算方法で値は出ます。
>
>  Dim dt(0 To 6) As Long
>  For II% = 1 To 6
>   If Cells(2, II%).Value = 0 Then
>     dt(II%) = dt(II% - 1) + Cells(3, II%).Value '累計する
>   Else
>     dt(II%) = 0 '0
>   End If
>   'こんな合計値
>   MsgBox dt(II%)
>  Next

教えていただいたコードで動きました。
ただ、少し困っています。
4月、5月等の月も関連させて累計したいのです。

書き忘れてしまったので非常に申し訳ないのですが。。
例では4月始まりでしたが、6月始まりだったり
10月始まりだったりします。
なので、4月を見つけてその下のセルの値を拾う
方法をとっていたのです・・
(これを12ヶ月分書いていました)

よろしくお願いします。

【48148】Re:条件付で累計したいのですが。
発言  りん E-MAIL  - 07/4/5(木) 8:36 -

引用なし
パスワード
   けいこ さん、おはようございます。

>>>     A列 B列 C列 D列 E列 F列
>>>     4月 5月  6月 7月 8月 9月
>>>売上    0  200  0  0  0  700
>>>実働費用  50  130  100 300 100 80
>>>条件
>>>・売上がある月はゼロにする。
>>>・売上がない月は累計を出す(売上が上がるまで)
>教えていただいたコードで動きました。
>ただ、少し困っています。
>4月、5月等の月も関連させて累計したいのです。
関連させてとはどういう意味ですか?

【48244】Re:条件付で累計したいのですが。
発言  けいこ  - 07/4/9(月) 21:58 -

引用なし
パスワード
   ▼りん さん:
こんばんは。
返事が遅くなり申し訳ございません。

>>>>     A列 B列 C列 D列 E列 F列
>>>>     4月 5月  6月 7月 8月 9月
>>>>売上    0  200  0  0  0  700
>>>>実働費用  50  130  100 300 100 80
>>>>条件
>>>>・売上がある月はゼロにする。
>>>>・売上がない月は累計を出す(売上が上がるまで)
>>教えていただいたコードで動きました。
>>ただ、少し困っています。
>>4月、5月等の月も関連させて累計したいのです。
>関連させてとはどういう意味ですか?

今、findで4月を探し、もし4月が見つかり
その下の値が0ならば、0ffset(2)の値を転記する。
もし0以上であれば0を転記するというコードを書いています。

すべて4月始まりではなく、10月から始まっていたり
1月から始まっていたりと色々です。

また転記先が
A1・・・・・・・・・・・・・・・・L1
4月 5月 6月 7月・・・・・・3月
値  値  値

と形が決まっていたので
findを使うのかよいのかと思って書いていました。

このコードとりんさんに教えていただいたコードとを
うまくあわせられなかったので質問させていただきました。
言葉足らずで申し訳ありませんでした。

【48278】Re:条件付で累計したいのですが。
発言  りん E-MAIL  - 07/4/11(水) 8:52 -

引用なし
パスワード
   けいこ さん、おはようございます。

>今、findで4月を探し、もし4月が見つかり
>その下の値が0ならば、0ffset(2)の値を転記する。
>もし0以上であれば0を転記するというコードを書いています。
>すべて4月始まりではなく、10月から始まっていたり・・・・
4月がなかったら?
転記先は常に同じ形の表ですか?

【48293】Re:条件付で累計したいのですが。
発言  けいこ  - 07/4/11(水) 23:32 -

引用なし
パスワード
   ▼りん さん:
こんばんは。
ありがとうございます。

>
>>今、findで4月を探し、もし4月が見つかり
>>その下の値が0ならば、0ffset(2)の値を転記する。
>>もし0以上であれば0を転記するというコードを書いています。
>>すべて4月始まりではなく、10月から始まっていたり・・・・
>4月がなかったら?
>転記先は常に同じ形の表ですか?

転記先は
4月 5月 6月・・・・・・・・3月
というかたちで、各月の下に値を転記します。

もし4月がなかったら、4月の下の欄には
ゼロを入力します。

よろしくお願いいたします。

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