Excel VBA質問箱 IV

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

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


6227 / 13646 ツリー ←次へ | 前へ→

【46523】浮動列のSUMIF関数 chacola 07/2/5(月) 23:12 質問[未読]
【46525】Re:浮動列のSUMIF関数 Ned 07/2/5(月) 23:39 発言[未読]
【46526】Re:浮動列のSUMIF関数 ponpon 07/2/5(月) 23:43 発言[未読]
【46528】Re:浮動列のSUMIF関数 かみちゃん 07/2/5(月) 23:58 発言[未読]
【46530】Re:浮動列のSUMIF関数 ponpon 07/2/6(火) 0:26 発言[未読]
【46527】Re:浮動列のSUMIF関数 かみちゃん 07/2/5(月) 23:47 発言[未読]
【46529】Re:浮動列のSUMIF関数 chacola 07/2/6(火) 0:25 お礼[未読]

【46523】浮動列のSUMIF関数
質問  chacola  - 07/2/5(月) 23:12 -

引用なし
パスワード
     A  B   C   D  E   F  ・・・ CB
1 単価 数量 合計 単価 数量 合計    数量合計
2 5   10  50  10  10  100     20
3 2   10  20  5  8   40      18

数量合計=SUMIF(A1:$CB$1,"数量",A2:CB2)
と、セルに数式を入れる場合は、CB2に記述しますが、
VBで自動入力し、
れを、CB列の最終行までコピーするにはどう記述したらいいでしょうか?

明日までと言われあれこれやっていますが、
どうもできません。。

どうぞよろしくお願いいたします。

【46525】Re:浮動列のSUMIF関数
発言  Ned  - 07/2/5(月) 23:39 -

引用なし
パスワード
   こんにちは。
アドレスの情報が不適切なので
CC列に、CB列最終行まで数式を入れる...という事でいいですか?
Range("CC2", Range("CB65536").End(xlUp).Offset(, 1)) _
            .Formula = "=SUMIF($A$1:$CB$1,""数量"",A2:CB2)"

【46526】Re:浮動列のSUMIF関数
発言  ponpon  - 07/2/5(月) 23:43 -

引用なし
パスワード
   ▼chacola さん:
>  A  B   C   D  E   F  ・・・ CB
>1 単価 数量 合計 単価 数量 合計    数量合計
>2 5   10  50  10  10  100     20
>3 2   10  20  5  8   40      18
>
>数量合計=SUMIF(A1:$CB$1,"数量",A2:CB2)
>と、セルに数式を入れる場合は、CB2に記述しますが、
>VBで自動入力し、
>れを、CB列の最終行までコピーするにはどう記述したらいいでしょうか?

こういう事でしょうか?
関数はよくわからんけど・・・
最終行は、A列で取得しています。

Sub test()
  Range("CB2", Range("CB" & Range("A65536").End(xlUp).Row)).Formula = _
      "=SUMIF($A$1:$G$1,""数量"",A2:CB2)"
End Sub

【46527】Re:浮動列のSUMIF関数
発言  かみちゃん  - 07/2/5(月) 23:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

Nedさんからもコメントが出ていますが・・・

>  A  B   C   D  E   F  ・・・ CB
>1 単価 数量 合計 単価 数量 合計    数量合計
>2 5   10  50  10  10  100     20
>3 2   10  20  5  8   40      18
>
>数量合計=SUMIF(A1:$CB$1,"数量",A2:CB2)
>と、セルに数式を入れる場合は、CB2に記述しますが、
>VBで自動入力し、
>れを、CB列の最終行までコピーするにはどう記述したらいいでしょうか?

CB列の最終行までコピーというより、設定する範囲を決めてから一気に設定する
方法です。
ちなみに、CB列はこれから計算式を設定すると思いますので、CB列の最終行はまだ
求められないと思います。

一応以下のような感じでできると思いますが、例では、CA列の最終行を取得して、
その行のCB列までに数式を設定するというものです。

Sub Sample1()
 Range("CA2", Range("CA65536").End(xlUp)).Offset(, 1).Formula = _
  "=SUMIF($A$1:$CB$1,""数量"",A2:CB2)"
End Sub

ちょっとややこしいですが、以下のような方法でもできます。

Sub Sample2()
 With Range("CA1")
  .Resize(.Offset(Rows.Count - .Row).End(xlUp).Row _
   - .Row).Offset(1, 1).Formula = _
    "=SUMIF($A$1:" & .Address & ",""数量""," & _
     .Offset(1, .Column * -1 + 1).Resize(, .Column).Address(0, 0) & ")"
 End With
End Sub

【46528】Re:浮動列のSUMIF関数
発言  かみちゃん  - 07/2/5(月) 23:58 -

引用なし
パスワード
   こんにちは。かみちゃん です。

▼ponpon さん:

ご存知でしたら余計なことですが、

>  Range("CB2", Range("CB" & Range("A65536").End(xlUp).Row)).Formula = _

の記述は、
  Range("A2", Range("A65536").End(xlUp)).Offset(, 80 - 1).Formula = _
という方法もできます。
A列の最終行の範囲をまず求めて、CB列(80列目)へOffsetするという方法です。

【46529】Re:浮動列のSUMIF関数
お礼  chacola  - 07/2/6(火) 0:25 -

引用なし
パスワード
   かみちゃんさん、こんばんわ。
どうもありがとうございました(泣)
できました。。。
焦らずに、基本からじっくりやるべきですね。。
今回は時間がなく、全て頼ってしまいました。
時間をかけて勉強します!!

本当にありがとうございました。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>Nedさんからもコメントが出ていますが・・・
>
>>  A  B   C   D  E   F  ・・・ CB
>>1 単価 数量 合計 単価 数量 合計    数量合計
>>2 5   10  50  10  10  100     20
>>3 2   10  20  5  8   40      18
>>
>>数量合計=SUMIF(A1:$CB$1,"数量",A2:CB2)
>>と、セルに数式を入れる場合は、CB2に記述しますが、
>>VBで自動入力し、
>>れを、CB列の最終行までコピーするにはどう記述したらいいでしょうか?
>
>CB列の最終行までコピーというより、設定する範囲を決めてから一気に設定する
>方法です。
>ちなみに、CB列はこれから計算式を設定すると思いますので、CB列の最終行はまだ
>求められないと思います。
>
>一応以下のような感じでできると思いますが、例では、CA列の最終行を取得して、
>その行のCB列までに数式を設定するというものです。
>
>Sub Sample1()
> Range("CA2", Range("CA65536").End(xlUp)).Offset(, 1).Formula = _
>  "=SUMIF($A$1:$CB$1,""数量"",A2:CB2)"
>End Sub
>
>ちょっとややこしいですが、以下のような方法でもできます。
>
>Sub Sample2()
> With Range("CA1")
>  .Resize(.Offset(Rows.Count - .Row).End(xlUp).Row _
>   - .Row).Offset(1, 1).Formula = _
>    "=SUMIF($A$1:" & .Address & ",""数量""," & _
>     .Offset(1, .Column * -1 + 1).Resize(, .Column).Address(0, 0) & ")"
> End With
>End Sub

【46530】Re:浮動列のSUMIF関数
発言  ponpon  - 07/2/6(火) 0:26 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>▼ponpon さん:
>
>ご存知でしたら余計なことですが、
>
>>  Range("CB2", Range("CB" & Range("A65536").End(xlUp).Row)).Formula = _
>
>の記述は、
>  Range("A2", Range("A65536").End(xlUp)).Offset(, 80 - 1).Formula = _
>という方法もできます。
>A列の最終行の範囲をまず求めて、CB列(80列目)へOffsetするという方法です。

なるほどね。
ありがとうございました。

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