[[20190109160824]] 『間に行を入れ、上下の平均値を挿入』(トーマス) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『間に行を入れ、上下の平均値を挿入』(トーマス)

0.00  6.1
0.02  8.6
0.04  11.1
0.06  13.6
0.08  16.1
0.10  18.6

この状態から

0.00  6.1
0.01  7.35 *
0.02  8.6
0.03  9.85 *
0.04  11.1
0.05  12.35 *
0.06  13.6
0.07  14.85 *
0.08  16.1
0.09  17.35 *
0.10  18.6

この状態へ変更したいのです。
(*)の行が追加したい箇所です。

左側は0.01ずつ増加、右側は上下の値の平均値を。
2000行ほど(20.00)作りたいこと、右側が完全に比例ではないことから
簡単な式かつスピーディーな方法はないでしょうか。

ご教示お願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 スピーディーかどうかは不明ですが…

 Sub test()

     Dim i As Long

     Application.ScreenUpdating = False

     For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
         Rows(i).Insert
         Cells(i, 1).Value = Cells(i + 1, 1).Value - 0.01
         Cells(i, 2).Value = Application.Average(Cells(i + 1, 2).Value, Cells(i - 1, 2).Value)
     Next

     Application.ScreenUpdating = True

 End Sub
(bi) 2019/01/09(水) 16:41

biさんと似たようなコードになりましたが、マクロを考えるのが早いんじゃないでしょうか。
それと、A列も上下足して2で割っても良いかと。
 Sub test()
    Dim i As Long

    Application.ScreenUpdating = False
    For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
        Rows(i).Insert Shift:=xlDown
        Cells(i, "A").Value = (Cells(i - 1, "A").Value + Cells(i + 1, "A").Value) / 2
        Cells(i, "B").Value = (Cells(i - 1, "B").Value + Cells(i + 1, "B").Value) / 2
    Next i
    Application.ScreenUpdating = True
 End Sub
(???) 2019/01/09(水) 16:45

 数式です。

	A	B	C	D	E	F
1	0.00	6.10			0.00	6.10
2	0.02	8.60			0.01	7.35
3	0.04	11.10			0.02	8.60
4	0.06	13.60			0.03	9.85
5	0.08	16.10			0.04	11.10
6	0.10	18.60			0.05	12.35
7					0.06	13.60
8					0.07	14.85
9					0.08	16.10
10					0.09	17.35
11					0.10	18.60

 E1 =(ROW(A1)-1)/100
 F1 =IF(COUNTIF(A:A,E1),SUMIF(A:A,E1,B:B),SUM(SUMIF(A:A,E1+{0.01,-0.01},B:B))/2)

 E1:F1 下へコピー。 (E1が20になるまで)

 E1:F1をA:B列へ値コピー。
(GobGob) 2019/01/09(水) 16:48

皆様、早速のご教示ありがとうございました。
マクロを組むまでのスキルが無く、これを機に勉強しようと思います。

GobGob様の方法がシンプルにできました。

(トーマス) 2019/01/10(木) 00:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.