プロが教えるわが家の防犯対策術!

(A15:M90)に図のようなシートがあり、J、K、L、M列にあるデータの数値を、
同じ列内で、しかも偶数行どうしか、奇数行どうしで数を1つずつ移動したいです。
たとえば J15 の25を1減らし、その分をJ17へ1増やし、それぞれ24,26にする。
ちょうどいい数までそれを連続実行する。またその逆もできる。偶数行と奇数行や、他の列を
選んでしまったら、エラーも表示してくれる。

そんなマクロが組めたら・・・と思っていたのですが、あきらめていました。
しかし、最近ここでA列内でデータを交換する方法を尋ねたら、よいマクロを作っていただいた
ので、ひょっとしてできるのかな?と思いついてお尋ねします。

増減の対象は、同一列内のみで、他の列に移動することはありません。
また、偶数行と奇数行は物が違うので移動対象ではありません。
移動は列の上下しかなく、数の移動は1づつで結構です。

Ctrl+2セル選択しておいて2種類のショートカットあるいはマクロボタン、あるいは
左右のマウスクリックで増減できると、画面上で移動対象がわかっていいなと思いますが、
そんなことできるのでしょうか。

「Excelの同じシートの同じ列内で数値の」の質問画像

A 回答 (2件)

失礼しました。

質問文を読み違えていました。次の行を書き換えてみて下さい。
ちなみに、A15:M90の範囲については、ノーチェックですので、必要であれば、golgo30さんの方で追加してみて下さい。

誤)If WorksheetFunction.IsOdd(Target.Areas(1).Value + Target.Areas(2).Value) Then Exit Sub
正)If WorksheetFunction.IsOdd(Target.Areas(1).Row + Target.Areas(2).Row) Then Exit Sub
    • good
    • 0
この回答へのお礼

ママチャリさん

できました!ありがとうございました。感謝m(_ _)m

お礼日時:2018/02/17 21:47

こんなのでどうでしょう。


セルを2つ選択した状態で右クリックすると値が増減します。
ちなみに、セルをひとつ、または3つ以上選択されている場合は、通常の右クリックと同じ動作をします(エラー表示はしませんでした)。また、選択している列が違ったり、偶数、奇数の条件が一致しない場合も通常の右クリック動作となります。
選択したセルのうち、アクティブ側が減算。他方が加算となります。TABキーを押すことにより、加減算するセルを切り替えることができます。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Dim r As Range
If Target.Areas.Count <> 2 Then Exit Sub
If Target.Count <> 2 Then Exit Sub
If Target.Areas(1).Column <> Target.Areas(2).Column Then Exit Sub
If WorksheetFunction.IsOdd(Target.Areas(1).Value + Target.Areas(2).Value) Then Exit Sub
If ActiveCell.Address = Target.Areas(1).Address Then
Target.Areas(1).Value = Target.Areas(1).Value - 1
Target.Areas(2).Value = Target.Areas(2).Value + 1
Else
Target.Areas(1).Value = Target.Areas(1).Value + 1
Target.Areas(2).Value = Target.Areas(2).Value - 1
End If
Cancel = True
End Sub
    • good
    • 0
この回答へのお礼

ママチャリさん

凄い!ずっと悩んでいたことが解決されました。これで仕事の間違いが減らせそうです。ほぼうまく動いていますが、

>偶数、奇数の条件が一致しない場合も通常の右クリック動作となります。

が、普通に増減できてしまいます。恐れ入りますが、教えてください。

お礼日時:2018/02/17 15:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!