[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行の追加や削除でも数式がずれない方法』(事務員)
お世話になります。
a1.a10.a15に値があり、その合計をa20に表示させるには
a20cellにa1+a10+a15ですが
行の挿入や削除した場合は参照cellかズレます。
どういう計算式にすればよろしいでしょうか?
過去ログみてもイマイチでした。
絶対参照でも上手くいきません。
解決策を教えてください。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
このようなことだろうか? =INDIRECT("A1")+INDIRECT("A10")+INDIRECT("A15") (ねむねむ) 2022/10/31(月) 21:19:55
行追加や行削除をしてもA1セル、A10セル、A15セルを計算対象にしたい、 という意味だと判断したのだが異なるのだろうか? (ねむねむ) 2022/11/01(火) 10:09:22
=A1+A10+A15
だったときに、どういう操作をしたときにどういう数式に変わって
事務員さんはどういう数式になってほしい、というものを具体的に示してください。
(西瓜) 2022/11/01(火) 10:21:05
説明不足ですみません。
行の追加や削除をした時に 元々のa1やa15やa10に入ってる値を
そのまま計算して 計算結果をa20に出したいと言う事でした。
a20のセルは動いても構いません。
宜しくお願いします
(事務員) 2022/11/01(火) 11:19:15
(下手の横好き) 2022/11/01(火) 17:30:04
20行目をコピーはしてません。
西瓜様
新たにサンプル作って試してみましたが
ずれませんね!
症状がでるシートがなんか変という事でしょうね!?
ありがとうございました😊
(事務員) 2022/11/01(火) 20:07:44
>新たにサンプル作って試してみましたが >ずれませんね! ずれないそのシートが変なんじゃないですか。 どのようにしたんですかね。 その方法を伺いたいですね。 (???) 2022/11/01(火) 20:14:55
追加で申し訳ないのですが、教えてください。
a1+a10+a15 の合計をa20に表示
c1+c10+c15 の合計をc20に表示する式が
入っています。この状態でランダムで2行挿入や
2行削除した時に 例えば a3とc3のセルを
上記の式に追加する事って可能でしょうか?
宜しくお願いします
(事務員) 2022/11/02(水) 19:09:14
とりあえずA列だけに限定して説明してください。
下記のようにA20セルに式が入っているとして、 ・例えば、どの行に2行挿入するんですか? ・そして、どこのセルの計算式が、どうなってほしいんですか? きちんと書いて貰わないと、相手に伝わりませんよ。
A列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 =A1+A10+A15 (γ) 2022/11/02(水) 22:55:17
2行の挿入はランダムですね!
3.4行だったり、11.12行だったりします。
例えば、3.4行に2行挿入した場合に
上記の式にa3を追加したいです。
宜しくお願いします。
(事務員) 2022/11/03(木) 11:02:32
それはそうなんですけど!(⌒-⌒; )
自動で計算式に反映されたいです。
列も30列位ありますので マクロ等で
実現可能ならと考えてます。
お願いします。
(事務員) 2022/11/03(木) 12:02:04
>a1+a10+a15 の合計をa20に表示
>ランダムで2行挿入や2行削除した時に >例えば a3のセルを上記の式に追加する
私はまだ分からないですねぇ・・ 削除時は更に分からない。
もう一度、数式の「セルアドレス」と「数式」および「値」の変化を説明してください。 ※下に通常の例を書きますので、それを利用して、希望する結果図を書いてください。
<初期状態> → <3、4行を挿入した場合> → <3、4行を削除した場合>> 行 _A_ 行 _A_ 行 _A_ _ 1 201 1 201 1 201 2 2 2 2 2 2 3 3 3 3 5 4 4 4 4 6 5 5 5 3 5 7 6 6 6 4 6 8 7 7 7 5 7 9 8 8 8 6 8 202 9 9 9 7 9 11 10 202 10 8 10 11 11 11 11 9 11 11 12 11 12 202 12 11 13 11 13 11 13 204 14 11 14 11 14 11 15 204 15 11 15 11 16 11 16 11 16 11 17 11 17 204 17 11 18 11 18 11 18 607 19 11 19 11 ↑ 20 607 20 11 A18セル =A1+A8+A13 ↑ 21 11 A20セル =A1+A10+A15 22 607 23 ↑ 24 A22セル =A1+A12+A17
(半平太) 2022/11/03(木) 12:15:29
行を2行追加した時のみを、お願いします
削除した場合は考えないでおきます。
<初期状態> → <3、4行を挿入した場合> 行 _A_ 行 _A_ 1 201 1 201 2 2 2 2 3 3 3 4 4 4 5 5 5 3 6 6 6 4 7 7 7 5 8 8 8 6 9 9 9 7 10 202 10 8 11 11 11 9 12 11 12 202 13 11 13 11 14 11 14 11 15 204 15 11 16 11 16 11 17 11 17 204 18 11 18 11 19 11 19 11 20 607 20 11 ↑ 21 11 A20セル =A1+A1gyou 22 607 23 ↑ 24 A22セル =A1+A12+A17
?@ 3,4行目に2行追加します。
?A A22セルにある計算式 =A1+A12+A17に
?B 自動でA3を追加し計算式を =A1+A3+A12+A17にしたいです。
宜しくお願いします。
(事務員) 2022/11/03(木) 13:41:59
Sub Macro2()
'
' Macro2 Macro
'
Rows("3:4").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveWindow.SmallScroll Down:=15 Range("A23").Select ActiveCell.FormulaR1C1 = "=R[-22]C+R[-20]C+R[-16]C+R[-11]C+R[-6]C" Range("A24").Select ActiveWindow.SmallScroll Down:=-21 End Sub
宜しくお願いします。
(事務員) 2022/11/03(木) 14:19:06
=a1+a10+a15+if(cell("address",a20)<>"$a$20",a3)
(傘) 2022/11/03(木) 15:04:57
上記の式 試してみました。挿入だけですが
確かに元々のa3を足す事は確認しました。
行の挿入後のa3は足されてはいませんでした。
う〜ん!!
(事務員) 2022/11/03(木) 15:23:17
だいぶクリアになりました。
1.3行目に2行まとめて挿入したのに、何故A3だけが追加されるんですか? 挿入した行が複数の場合、トップ行だけ数式に追加するってことなんですか?
すると、一行ずつ2回に分けて挿入すれば、 A22セル =A1+A3+A4+A12+A17 になるんでしょうか?
2.数式は、ホントにそんな簡単な数式なんでしょうか? そうじゃないなら、実際の数式をアップいただけませんか?
(半平太) 2022/11/03(木) 15:40:42
1.3行目に2行まとめて挿入したのに、何故A3だけが追加されるんですか?
挿入した行が複数の場合、トップ行だけ数式に追加するってことなんですか?
→ はい!
すると、一行ずつ2回に分けて挿入すれば、
A22セル =A1+A3+A4+A12+A17 になるんでしょうか?
→質問の意味がわかりません。一行ずつ2回に分けて挿入はないです。
挿入の条件は2行が基本です。
2.数式は簡単足し算です。
宜しくお願いします。
(事務員) 2022/11/03(木) 15:51:42
前提 1.初期状態において、A20セルに =A1+A10+A15 等と入力されている 2.A21セルに「新数式」と入れて置く 3.行削除は行わない
当該シートの「シートモジュール(※)」に後記コードを貼付ける ※標準モジュールではない←重要
挿入後 (1) A22セル =A1+A12+A17+A3 ’セルは順番にはなっておりません あしからず m(__)m (2) C22セル =C1+C12+C17+C3
<初期状態> → <3,4行目に行挿入> 行 ___A___ _B_ _C_ 行 ___A___ _B_ _C_ 1 201 301 1 201 301 2 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 3 3 6 6 6 6 4 4 7 7 7 7 5 5 8 8 8 8 6 6 9 9 9 9 7 7 10 202 301 10 8 8 11 11 11 11 9 9 12 11 11 12 202 301 13 11 11 13 11 11 14 11 11 14 11 11 15 204 304 15 11 11 16 11 11 16 11 11 17 11 11 17 204 304 18 11 11 18 11 11 19 11 11 19 11 11 20 607 906 20 11 11 21 新数式 21 11 11 22 607 906 23 新数式
Private Sub Worksheet_Change(ByVal Target As Range) Dim Pos As Range, aCell As Range
If Target.Rows(1).Cells.CountLarge = 16384 Then If Target(1, 1) <> Empty Then Exit Sub End If
Set Pos = Columns("A").Find("新数式").Offset(-1)
Application.EnableEvents = False
For Each aCell In Range(Pos, Cells(Pos.Row, Columns.Count).End(xlToLeft)) If aCell.HasFormula Then aCell.FormulaLocal = aCell.FormulaLocal & "+" & Cells(Target(1, 1).Row, aCell.Column).Address(0, 0) End If Next aCell End If
Application.EnableEvents = True End Sub
(半平太) 2022/11/03(木) 17:23:26
> 当該シートの「シートモジュール(※)」に後記コードを貼付ける > ※標準モジュールではない←重要 ↑ これ、守っていますか?
(半平太) 2022/11/03(木) 18:09:43
Sheet1の「シート見出し」を右クリック 「コードの表示」をクリック
VBE画面が出ますので、そこにコードを貼り付けてください。
(半平太) 2022/11/03(木) 18:24:02
コード貼り付けはあってます。
貼り付け後の操作が間違ってますか?
3,4行目を挿入すれば良いですよね!
ちなみにex.は2019です。現在の環境はです。
(事務員) 2022/11/03(木) 18:33:17
質問ですが、新数式と入れる意味を
教えてください。
本当にありがとうございます。
(事務員) 2022/11/03(木) 19:00:01
> 新数式と入れる意味
ターゲットとなる数式がどのセルにあるか探る為の目印です。
数式が1列に一つしかないなら、他にやりようもありますが、 そう言う情報が不足しているので、この方式にしました。
(半平太) 2022/11/03(木) 19:07:32
›ターゲットとなる数式
=a+a10 ......の式ですかよね!
数式が確定したら、この新数式の行を 削除しても問題ないでしょうか?
(事務員) 2022/11/03(木) 19:35:37
>数式が確定したら、この新数式の行を 削除しても問題ないでしょうか?
行挿入はもうしない、と言う状態になれば、問題ないです。
その場合は、マクロも消去した方がいいと思いますが、 そちらの事情が分からないので、当方はこれ以上深入りしません。
(半平太) 2022/11/03(木) 20:03:07
「新数式」が無いときに行挿入するとトラブりますので、 その時はスルーすべく、以下のコードに差し替えてください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim Pos As Range, aCell As Range, rNewFml As Range
If Target.Rows(1).Cells.CountLarge = 16384 Then If Target(1, 1) <> Empty Then Exit Sub End If
Set rNewFml = Columns("A").Find("新数式")
If rNewFml Is Nothing Then Exit Sub End If
Set Pos = rNewFml.Offset(-1)
Application.EnableEvents = False
For Each aCell In Range(Pos, Cells(Pos.Row, Columns.Count).End(xlToLeft)) If aCell.HasFormula Then aCell.FormulaLocal = aCell.FormulaLocal & "+" & Cells(Target(1, 1).Row, aCell.Column).Address(0, 0) End If Next aCell End If
Application.EnableEvents = True End Sub
(半平太) 2022/11/03(木) 20:44:01
お世話になりました。
また教えてください。お手数おかけします。
上記のコードを応用して、A20セルに =A1+A10+A1の式と
A21セルに =A2+A11+A16の式がある場合
上記と同様に2行挿入した場合に、それぞれの計算式に同時に
ターゲットcellの追加はかのうでしょうか?
お願いします。
(事務員) 2023/01/08(日) 10:21:20
そちらの状況がよく分かってないので、余り深入りしたくないのですが、、
必ず2行挿入すると言うことでしたよね?
入れる場所は、全くデタラメな位置ではないと思っているのですが、実際はどうなんでしょうか? 例えば、必ず偶数行目から(または奇数行目から)挿入する、なんてルールがあるのでは?
>上記のコードを応用して、 >A20セルに =A1+A10+A1の式と >A21セルに =A2+A11+A16の式がある場合
A21セルに関しては、単にA20の参照先のセルを一つ下にずらしたセルを足しに 行く数式にすればいいことと解釈していいんでしょうか?
(半平太) 2023/01/08(日) 14:29:50
そちらの状況がよく分かってないので、余り深入りしたくないのですが、、
→ 深入り願います。こちらのかってな言い分ですみません。
必ず2行挿入すると言うことでしたよね? 入れる場所は、全くデタラメな位置ではないと思っているのですが、実際はどうなんでしょうか? 例えば、必ず偶数行目から(または奇数行目から)挿入する、なんてルールがあるのでは? →ルールや規則性はないです。奇数だったり偶数だったりです。ブロックで まちまちです。 >上記のコードを応用して、 >A20セルに =A1+A10+A1の式と >A21セルに =A2+A11+A16の式がある場合 A21セルに関しては、単にA20の参照先のセルを一つ下にずらしたセルを足しに 行く数式にすればいいことと解釈していいんでしょうか? →はい!
宜しくお願いします。
(事務員) 2023/01/08(日) 15:58:59
目印の「新数式」は、A22セルに手入力して置くものとします。
<初期状態> → <例:10行目に2行挿入した後の結果図> 行 ___A___ _B_ __C__ 行 ___A___ _B_ __C__ 1 201 301 1 201 301 2 5000 6000 2 5000 6000 3 4 4 3 4 4 4 5 5 4 5 5 5 6 6 5 6 6 6 7 7 6 7 7 7 8 8 7 8 8 8 9 9 8 9 9 9 202 301 9 202 301 10 11 11 10 11 11 11 11 12 11 11 12 11 11 13 11 11 13 11 11 14 204 304 14 11 11 15 11 11 15 11 11 16 11 11 16 204 304 17 11 11 17 11 11 18 11 11 18 11 11 19 3 4 19 11 11 20 223 323 20 11 11 21 5022 6022 21 3 4 22 新数式 22 223 323 23 5022 6022 24 新数式
初期状態の数式 → 挿入後の数式 (1) A20セル =A1+A10+A15 (1) A22セル =A1+A12+A17+A10 (2) C20セル =C1+C10+C15 (2) C22セル =C1+C12+C17+C10 (3) A21セル =A2+A11+A16 (3) A23セル =A2+A13+A18+A11 (4) C21セル =C2+C11+C16 (4) C23セル =C2+C13+C18+C11
’全面差し替えのコード Private Sub Worksheet_Change(ByVal Target As Range) Dim Aim As Range Dim sAimAdrNew As String, sAimAdrPre As String, sTgtAdr As String Dim rFmlPos As Range, aCell As Range
If Target.CountLarge <> 32768 Then Exit Sub Else Set Aim = Columns("A").Find("新数式") If Aim Is Nothing Then Exit Sub Else sTgtAdr = Target.Address sAimAdrNew = Aim.Address Application.EnableEvents = False Application.Undo '一旦、直前に戻る Set Aim = Columns("A").Find("新数式") sAimAdrPre = Aim.Address Application.Undo '現状復帰 Application.EnableEvents = True
If sAimAdrNew = sAimAdrPre Then Exit Sub End If End If End If
Application.EnableEvents = False
Set rFmlPos = Range(sAimAdrNew).Offset(-2)
For Each aCell In Range(rFmlPos, Cells(rFmlPos.Row, Columns.Count).End(xlToLeft)) If aCell.HasFormula Then aCell.FormulaLocal = aCell.FormulaLocal & "+" & Cells(Range(sTgtAdr)(1, 1).Row, aCell.Column).Address(0, 0) aCell.Copy aCell.Offset(1) End If Next aCell
Application.EnableEvents = True End Sub
(半平太) 2023/01/08(日) 16:36:33
ありがとうございます。
思い通りの結果になりました。
(事務員) 2023/01/08(日) 19:56:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.