セルに式を入れると、式の対象データが発生した時自動的に式が入っているセルに
値が入りますが、マクロ(モジュール)では、上記の方法(ボタン等を使用しない)はできないのでしょうか?
セルの式では下記の条件式がわかりませんがマクロの記述ならわかるので・・・
もしセルの式で下記できれば、こちらも教えて下さい。
1、例)A1~A30の間に10という値があった場合のみ対象のB例の値を加算する。
2、例)C1~C7の間にD1~D7の中に値がある場合のみ、C1から順番にD列の値を
移す。
2番の例は、よくわからないのですが、セルの式ではできないと思いますので
できれば、ボタン操作をつかわないでどこかに設定をすると自動的に行う方法
はありませんか?
お願いします。
もし、セルでは自動できないがテキストボックス等で、できるのでしたら・・・
どんな方法でもいいのでお願いします。
No.1
- 回答日時:
1.SUMIF関数でできます。
質問の場合、=SUMIF(A1:A10,10,B1:B10)
2.IF関数で出来るのでは?
C1セルに、=IF(D1="","",D1)
C2セルに、=IF(D2="","",D2)
・
・
・
質問の意図をくみ取れていると良いのですが・・・
No.2
- 回答日時:
質問の意味がつかみづらいですね。
『ボタンを使用しないで』の意味と
(1)対象のB列の値を加算する。
この『対象のB列』はどのセルで、『加算する』のは何に加算するのでしょうか。
解釈:A列の値が10なら右のB列の値をA列に加算する。
とすれば、循環を起こしますのでシートで関数等使ってはできないですね。
対象のB列の値を加算するの意味がはっきりすれば対応できるでしょう。
多分、Worksheet_SelectionChange か Worksheet_Change でセル番地を調べて
処理を書くことになるでしょう。しかし、処理内容によっては非常に困難だっ
たり、誤処理を引き起こしかねません。例えば、計算した後、B列の値を修正
したり削除した時にどうするかも決めておくことが必要です。
(2)値を移す。
解釈:これがカット&ペーストの意味なら、これもシートで関数等使ってはできない
ですね。D列を消すのが困難でしょう。
分からないのは、『移す』タイミングです。マクロを動かすには『きっかけ』
が必要ですが、質問からは、どの時点でマクロを動かすか読み取れないようです。
こちらは何かのきっかけで、D列をC列にコピーしてD列を消去するくらいでし
ょうか。
質問1:A列に入力した時点で判断して10だったらB列の値を加算する。
質問2:セルF2をクリックしたらD列をC列に移す。
と私なりに解釈して作った例です。シートのコードウインドウに貼り付けます。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'/// (質問1)A1からA30ならB列を加算 ///
Dim rw As Long '行カウンタ
On Error GoTo ErrorHandler
'単一セルを操作
If Target.Count = 1 Then
If Not Union(Target, Range("A1:A30")) Is Nothing Then
'値が10だったら
If Target.Value = 10 Then
Application.EnableEvents = False 'イベントが発生しないようにする
Target.Value = Target.Value + Range("B" & Target.Row)
Application.EnableEvents = True
End If
End If
End If
Exit Sub
ErrorHandler:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'/// (質問2)F2をクリックすればD列をC列に移す ///
Dim rw As Long '行カウンタ
On Error GoTo ErrorHandler
'単一セルを操作
If Target.Count = 1 Then
If Target.Address = "$F$2" Then
'数値が入力されていたら
If WorksheetFunction.Count(Range("D1:D7")) > 0 Then
Application.EnableEvents = False
'D列の値をC列に書く
For rw = 1 To 7
Cells(rw, 3) = Cells(rw, 4)
Next
'D列をクリア
Range("D1:D7").ClearContents
Application.EnableEvents = True
End If
End If
End If
Exit Sub
ErrorHandler:
Application.EnableEvents = True
End Sub
No.3ベストアンサー
- 回答日時:
セルに式を入れると自動的に値を入れる方法については
下記の手順でお願します。
エクセルを開く
VBEを開く
プロジェクトから任意のシートをダブルクリック
コードウィンドウの上にある2つのリストボックスの
左側でWorksheetを選択
右側でChangeを選択
すると下のものが作られるので
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
End Sub
これに以下のものを入れてください。
If Target.Address <> "$A$1" Then Exit Sub
Range("B1") = Range("B1") + Val(Range("A1").Value)
Range("A1").Activate
A1セルが変更された時のみ対象にしています。
B1にA1を足します。
「イベント」というものです。他には下のものがあります。
1.値が変更された時
2.シートがアクティブになった時
3.ダブルクリック
4.右クリック
5.再計算時
6.非アクティブになった時
7.選択範囲を変えた時
詳しくは、解説書などの「イベント」の欄で。
他の質問についてはボタンを使わないことが
重要だとするとこの応用で
A1のみを対象とせず、シート全体が対象であれば
何か変える、移動するだけでマクロが動くので
ボタンを必要とせず、数式ではなくマクロの記述が
使えるのではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) エクセルで隣(右or左)のセルと同じ文字色にしたい 2 2022/12/13 11:33
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報