Excel VBA質問箱 IV

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

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


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

【6770】選択セルの列番号を指定列番号に変更したい 初心者プラス1歩 03/8/3(日) 12:50 質問
【6775】Re:選択セルの列番号を指定列番号に変更した... よろずや 03/8/3(日) 17:46 回答
【6783】Re:選択セルの列番号を指定列番号に変更し... 初心者プラス1歩 03/8/3(日) 20:10 質問
【6785】すみません。条件の追加です。 初心者プラス1歩 03/8/3(日) 20:22 発言
【6797】Re:選択セルの列番号を指定列番号に変更し... よろずや 03/8/4(月) 13:04 回答
【6809】感服の至り 初心者プラス1歩 03/8/4(月) 18:33 お礼

【6770】選択セルの列番号を指定列番号に変更したい
質問  初心者プラス1歩  - 03/8/3(日) 12:50 -

引用なし
パスワード
   こんにちは。
ものすごい知識をお持ちの先輩諸氏がいらっしゃるのでお助けくださいませんか。

無作為に選択した単一セル、連続するセル範囲、およびCTRLキーを利用して得た
複数セルの列番号を固定した列番号に変更したいのです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells(1, 1) = ActiveWindow.RangeSelection.Address
End Sub

具体的には、上のマクロを使ってそのシートのセルを選択すると、A1セルに、例えば
「$C$9,$B$5:$D$7,$A$6:$C$10,$A$12」と選択セルの番地を取得する事が出来ます。
これを
「$Z$9,$Z$5:$Z$7,$Z$6:$Z$10,$Z$12」のように全て「Z」列に変更して、
セル値の合計を出したいのです。
しかし、ストレートに
=SUM($Z$9,$Z$5:$Z$7,$Z$6:$Z$10,$Z$12) と計算式にしたのでは、
$Z$6、$Z$7、$Z$9が重複して計算されてしまうので、
=SUM($Z$5:$Z$10,$Z$12) とまるめた範囲としたいのです。
条件としては…
1.選択セルの数や選択のパターン(CTRL利用の有無など)は決まっていません。
2.選択範囲はC50からZ62です。
3.絶対番地でなくても良いです。
4.計算式入力のセルは操作者選択なので、Z列固定ですが行は決まっていません。

範囲まるめはだめとしても、列番号の変更だけでもお教え願えませんでしょうか。
よろしくお願いします。

【6775】Re:選択セルの列番号を指定列番号に変更し...
回答  よろずや  - 03/8/3(日) 17:46 -

引用なし
パスワード
   >「$C$9,$B$5:$D$7,$A$6:$C$10,$A$12」と選択セルの番地を取得する事が出来ます。
>これを
>「$Z$9,$Z$5:$Z$7,$Z$6:$Z$10,$Z$12」のように全て「Z」列に変更して、
>セル値の合計を出したいのです。
>しかし、ストレートに
> =SUM($Z$9,$Z$5:$Z$7,$Z$6:$Z$10,$Z$12) と計算式にしたのでは、
> $Z$6、$Z$7、$Z$9が重複して計算されてしまうので、
> =SUM($Z$5:$Z$10,$Z$12) とまるめた範囲としたいのです。
こんな感じで。

  With Application
    Cells(1, 1) = .WorksheetFunction.Sum(.Intersect(Target.EntireRow, Columns("Z")))
  End With

【6783】Re:選択セルの列番号を指定列番号に変更し...
質問  初心者プラス1歩  - 03/8/3(日) 20:10 -

引用なし
パスワード
   ▼よろずや さん
ご回答ありがとうございます。

当方の質問が言葉たらずだったと思います。

>With Application
> Cells(1,1) .WorksheetFunction.Sum.IntersectTarget.EntireRow,Columns("Z")))
>End With
 
ご回答では確かにCells(1, 1) を変更する事で任意のセルに合計が表示されます。
..が、
計算対象となるセルの値は別セルを参照している事をお知らせしていませんでした。
その参照先のセル値を後で変更する可能性は大きく、その場合変更値が合計計算に反映されません。
実は、見積書を作っていまして、選択範囲はいろいろな項目の見積り金額の項目毎の合計であり、計算式はそれぞれの項目に掛かる経費など、%の異なる率を掛けるものです。

具体的にはA項目とB項目、C項目の各合計に対してア経費はA項目の10%、イ経費はAとBの3%、ウ経費はABCそれぞれの5%、最後に全ての合計…という具合です。(「経費ばかりを加えている変な会社」と思わないでください)

実際はもっとややこしくて、選択範囲の間違いが発生する可能性は大なので、その間違いをVBAで修正しようとしています。
合計数値ではなく、CやBやKをZに変換する、そのままの形がほしいのです。
やはり出来ない事なのでしょうか。

【6785】すみません。条件の追加です。
発言  初心者プラス1歩  - 03/8/3(日) 20:22 -

引用なし
パスワード
   計算式の元になる数値はZ列にしかありません。

選択のときは金額欄では項目が判らないので、項目を書いているセルをクリックします。
それでC、E、やKなどのセルが拾われてしまいます。

【6797】Re:選択セルの列番号を指定列番号に変更し...
回答  よろずや  - 03/8/4(月) 13:04 -

引用なし
パスワード
   > 合計数値ではなく、CやBやKをZに変換する、そのままの形がほしいのです。
.Intersect(Target.EntireRow, Columns("Z")).Address

【6809】感服の至り
お礼  初心者プラス1歩  - 03/8/4(月) 18:33 -

引用なし
パスワード
   ▼よろずや さん:
ありがとうございます。
質問の仕方が悪く、お手数をお掛けしました。すみませんでした。

>> 合計数値ではなく、CやBやKをZに変換する、そのままの形がほしいのです。
>.Intersect(Target.EntireRow, Columns("Z")).Address

まったく、そのままの形です。
ヘルプを見ても何を意味しているのかさっぱり???ですが、思うものが出て来ました。

本当に助かりました。

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