(A15:M90)に図のようなシートがあり、J、K、L、M列にあるデータの数値を、
同じ列内で、しかも偶数行どうしか、奇数行どうしで数を1つずつ移動したいです。
たとえば J15 の25を1減らし、その分をJ17へ1増やし、それぞれ24,26にする。
ちょうどいい数までそれを連続実行する。またその逆もできる。偶数行と奇数行や、他の列を
選んでしまったら、エラーも表示してくれる。
そんなマクロが組めたら・・・と思っていたのですが、あきらめていました。
しかし、最近ここでA列内でデータを交換する方法を尋ねたら、よいマクロを作っていただいた
ので、ひょっとしてできるのかな?と思いついてお尋ねします。
増減の対象は、同一列内のみで、他の列に移動することはありません。
また、偶数行と奇数行は物が違うので移動対象ではありません。
移動は列の上下しかなく、数の移動は1づつで結構です。
Ctrl+2セル選択しておいて2種類のショートカットあるいはマクロボタン、あるいは
左右のマウスクリックで増減できると、画面上で移動対象がわかっていいなと思いますが、
そんなことできるのでしょうか。
No.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
No.1
- 回答日時:
こんなのでどうでしょう。
セルを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
ママチャリさん
凄い!ずっと悩んでいたことが解決されました。これで仕事の間違いが減らせそうです。ほぼうまく動いていますが、
>偶数、奇数の条件が一致しない場合も通常の右クリック動作となります。
が、普通に増減できてしまいます。恐れ入りますが、教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に、A列の数字が偶数の場合は1減算した数字、奇数の場合はそのまま数字を自動表示したい 4 2022/04/16 12:01
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- JavaScript 助けてください‼︎ javascriptで質問があります。 配列を定義して、 29342、45342 3 2022/06/26 22:06
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル 上下で列幅を変えるには
-
Excel 時刻の並び替え
-
結合されたセルをプルダウンの...
-
エクセルマクロで偶数行(又は...
-
エクセル マクロで数値が変っ...
-
エクセルVBA:リストに登録した...
-
AのセルとB行を比較して、一致...
-
【EXCEL】連続データの個数を抽...
-
Excel グラフのプロットからデ...
-
Excel ウインドウ枠の固定をす...
-
エクセルのマクロで意図しない...
-
excel 小さすぎて見えないセル...
-
特定の文字がある行以外を削除...
-
エクセル2016で時間を入力して...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA:データ端に画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
AのセルとB行を比較して、一致...
-
エクセル マクロで数値が変っ...
-
エクセル 上下で列幅を変えるには
-
excelのデータで色つき行の抽出...
-
Excel グラフのプロットからデ...
-
エクセル2016で時間を入力して...
-
VBAで色の付いているセルの行削除
-
特定の文字がある行以外を削除...
-
連続データが入った行の一番右...
-
エクセルVBA 最終行を選んで並...
-
エクセルのセルに指定画像(.jpg...
-
エクセルで昨日までの日付デー...
-
エクセルマクロで偶数行(又は...
-
A1に入力された文字列と同じ文...
おすすめ情報