Excel VBA質問箱 IV

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

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


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

【35452】指定したアクティブセルの数値を1/2にしたいのですが ringotyanZ 06/3/5(日) 9:05 質問[未読]
【35453】Re:指定したアクティブセルの数値を1/2にし... ponpon 06/3/5(日) 9:46 発言[未読]
【35456】ponpon さん、ありがとうございます。 ringotyanZ 06/3/5(日) 12:57 お礼[未読]
【35454】Re:指定したアクティブセルの数値を1/2にし... かみちゃん 06/3/5(日) 9:51 発言[未読]
【35457】かみちゃん ありがとうございます。 ringotyanZ 06/3/5(日) 13:03 お礼[未読]
【35455】Re:指定したアクティブセルの数値を1/2にし... ichinose 06/3/5(日) 9:52 発言[未読]
【35458】ichinose さん ありがとうございました。 ringotyanZ 06/3/5(日) 13:08 お礼[未読]

【35452】指定したアクティブセルの数値を1/2にし...
質問  ringotyanZ  - 06/3/5(日) 9:05 -

引用なし
パスワード
   すでにデータの入力されたセルの数値を全て半分(1/2)にしたいのですが、何か良い方法はありませんでしょうか?

例えば、

100 200 300
120 140 160
140 200 500

と入力されている複数のセルを、

50 100 150
60 70 80
70 100 250

と全て半分の値にしたいのです。

よろしくお願いします。

【35453】Re:指定したアクティブセルの数値を1/2に...
発言  ponpon  - 06/3/5(日) 9:46 -

引用なし
パスワード
   おはようございます。

一つのセルを1/2にするのをマクロの記録でやってみましょう。
後は、ループで回すだけだと思います。
範囲を選択して実行してください。
切り上げ切り捨ては考えていません。

Sub test()

  Dim myR As Range
  Dim r As Range
  
  Set myR = Selection '範囲を指定する場合は変更
  For Each r In myR
   If Not IsEmpty(r.Value) Then
     r.Value = Val(r.Value) / 2
   End If
  Next
  
End Sub

【35454】Re:指定したアクティブセルの数値を1/2に...
発言  かみちゃん  - 06/3/5(日) 9:51 -

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

>すでにデータの入力されたセルの数値を全て半分(1/2)にしたい

一般操作でもできると思います。
1.どこかのセルに2を入れる
2.1.のセルをコピーする
3.半分の値にしたいセルを選択する。
4.「形式を選択して貼り付け」で「値」「除算」にチェックして、OK
5.1.のセルを消す

【35455】Re:指定したアクティブセルの数値を1/2に...
発言  ichinose  - 06/3/5(日) 9:52 -

引用なし
パスワード
   ▼ringotyanZ さん:
おはようございます。

>すでにデータの入力されたセルの数値を全て半分(1/2)にしたいのですが、何か良い方法はありませんでしょうか?
>
>例えば、
>
>100 200 300
>120 140 160
>140 200 500
>
>と入力されている複数のセルを、
>
>50 100 150
>60 70 80
>70 100 250
>
>と全て半分の値にしたいのです。
>
>よろしくお願いします。
1/2にしたセル範囲を選択した状態で

'==========================================
Sub main()
  Dim rng As Range
  Set rng = Selection
  With rng
    If .Areas.Count = 1 Then
     .Value = Evaluate("=if(isnumber(" & .Address & ")," _
          & .Address & "/2," & .Address & ")")
    Else
     MsgBox "複数のエリアは駄目"
     End If
    End With
End Sub

を実行してみて下さい。

【35456】ponpon さん、ありがとうございます。
お礼  ringotyanZ  - 06/3/5(日) 12:57 -

引用なし
パスワード
   さっそく試してみたところ、このまま使えてしまいました!

範囲を選択してマクロを実行すると、その範囲のデータが全て1/2になるようになっているんですね。

まだ勉強を始めたばかりなので、なぜこうなるのか理解し切れていない部分があるのですが、色々いじって研究してみます。

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

【35457】かみちゃん ありがとうございます。
お礼  ringotyanZ  - 06/3/5(日) 13:03 -

引用なし
パスワード
   驚きました。

こんなやり方もあったんですね〜。。。。。

色々と応用できそうな気がします。

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

【35458】ichinose さん ありがとうございました。
お礼  ringotyanZ  - 06/3/5(日) 13:08 -

引用なし
パスワード
   こちらも上手く動作しました。

色々なやり方があるんですね。

まだ勉強してない部分だったのですが、研究してみます。

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

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