[[20130116144501]] 『各点間の補間』(onono77) ページの最後に飛ぶ

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

 

『各点間の補間』(onono77)
Excel2003 Windows Vista を使っております。
以下のデータを距離1m毎に並び替えたいのですが、
どなたかご教示ください。
よろしくお願いします。

A列 B列 C列
時間 速度 累計距離
秒  時速 m
 0  10  0
 1  15  4.2
 2  20  9.8
 3  23  16.2
 4  22  22.3
 5  23  28.7
 6  20  34.3
 7  15  38.5
 8  12  41.3


	A	B	C	D	E	F	G	H
1	時間	速度	累計		時間	速度	累計	距離
2	秒	時速	m		秒	時速	m	
3	0	10	0		0	10	0	0
4	1	15	4.2		0	10	0	1
5	2	20	9.8		0	10	0	2
6	3	23	16.2		0	10	0	3
7	4	22	22.3		0	10	0	4
8	5	23	28.7		1	15	4.2	5
9	6	20	34.3		1	15	4.2	6
10	7	15	38.5		1	15	4.2	7
11	8	12	41.3		1	15	4.2	8
12					1	15	4.2	9
13					2	20	9.8	10
14								

 H列に距離を入力
 E3 =LOOKUP($H3,$C:$C,A:A) G3までコピー。
 E3:G3下へコピー。

 ってこと?

 (GobGob)

 H列なし。
 E3 =LOOKUP(ROW(A1)-1,$C:$C,A:A)

 でもいいかも?

 (GobGob)

GobGobさま
説明不足申し訳ございません。

以下に示すように、G列には1から1mおきに数字をいれておき
E列・F列をどのように算出するか悩んでおりました。
例えば
G列に、2と入れた場合は、C3,C4の間にあるので
E列は、A3,A4の値を補間して0.48
F列は、B3,B4のの値を補間して12.38

G列に8と入れた場合は、
E列は、A4,A5の値を補間して1.68
F列は、B4,B5の値を補間して18.38

と手計算でもある程度できますが、
結構な個数があり、関数を駆使してできないものかと
考えておりました。

質問内容これで伝わりましたでしょうか?
よろしくお願いします。

	A	B	C	D	E	F	G
1	時間	速度	距離		時間	速度	累計
2	秒	時速	m		秒	時速	m
3	0	10	0		0.0	10	0
4	1	15	4.2		0.24	11.19	1(3〜4列を補間)
5	2	20	9.8		0.48	12.38	2(3〜4列を補間)
6	3	23	16.2		0.71	13.57	3(3〜4列を補間)
7	4	22	22.3		0.95	14.76	4(3〜4列を補間)
8	5	23	28.7		1.14	15.71	5(4〜5列を補間)
9	6	20	34.3		1.32	16.60	6(4〜5列を補間)
10	7	15	38.5		1.50	17.49	7(4〜5列を補間)
11	8	12	41.3		1.68	18.38	8(4〜5列を補間)

(onono77)


D,E,F列を0.1m毎の表(ワーク)として使い、G,H,I列に1m毎の表を作成する例。

 Sub test()
    Dim iMax As Long
    Dim i As Long
    Dim j As Long
    Dim iC1 As Long
    Dim iC2 As Long
    Dim jSt As Long
    Dim jEd As Long

    iC1 = 3
    iC2 = 3
    iMax = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 3 To iMax - 1
        jSt = Cells(i, "C").Value * 10
        jEd = Cells(i + 1, "C").Value * 10
        For j = jSt To jEd - 1
            Cells(iC1, "D").Value = (Cells(i + 1, "A").Value - Cells(i, "A").Value) * (j - jSt) / (jEd - jSt) + Cells(i, "A").Value
            Cells(iC1, "E").Value = (Cells(i + 1, "B").Value - Cells(i, "B").Value) * (j - jSt) / (jEd - jSt) + Cells(i, "B").Value
            Cells(iC1, "F").Value = iC1 - 3
            iC1 = iC1 + 1
        Next j
    Next i

    For i = 3 To iC1 - 1 Step 10
        Cells(iC2, "G").Value = Cells(i, "D").Value
        Cells(iC2, "H").Value = Cells(i, "E").Value
        Cells(iC2, "I").Value = iC2 - 3
        iC2 = iC2 + 1
    Next i
End Sub

(???)


 質問への回答ではありませんが、
 直線補間でしたら単純な式で出来そうですが、区間の平均速度と距離に
 乖離があるので、線形補正ではまずくはないでしょうか。
 (Mook) 

(???)さん
ご回答ありがとうございます。できました。
でも、データの個数が多いと計算に時間がかかりそうです。
いま、裏でずっとエクセルが回ってますが、まだ終わりません。
(MOOK)さん
自動車の速度データなので、1秒おきに速度が変わります。
あるポイントを通過したときを0sにしています。
横軸を距離、縦軸速度として線を結び、
1m毎の速度をグラフから読み取りたいと思っておりました。
できれば、関数で行いたいのですが、
何かよい方法はないでしょうか?
(onono77)

 >1m毎の速度

 こっちで考えてたのでこっちにこっそり。
 一覧作ればいいや、って思ってたのでそれを。

 DとFを作業列に使用。
 	A	B	C	D	E	F	G	H
1	時間	速度	累計距離				累計距離	速度
2	秒	時速	m					
3	0	10	0				0	10
4	1	15	4.2	1.19 		4	0.1	10.12 
5	2	20	9.8	0.89 		4	0.2	10.24 
6	3	23	16.2	0.47 		4	0.3	10.36 
7	4	22	22.3	-0.16 		4	0.4	10.48 
8	5	23	28.7	0.16 		4	0.5	10.60 
9	6	20	34.3	-0.54 		4	0.6	10.71 
10	7	15	38.5	-1.19 		4	0.7	10.83 
11	8	12	41.3	-1.07 		4	0.8	10.95 

 G3に 0 H3に 10 を入力
 G4に 0.1 G5に 0.2 を入力
 G3からG5までを選択、必要分下に連続データフィルコピー

 D4
 =(B4-B3)/(C4-C3)
 データ数分下にフィルコピー

 F4
 =IF(ISERROR(MATCH(G4,$C$3:$C$11,0)),MATCH(G4,$C$3:$C$11,1)+3,MATCH(G4,$C$3:$C$11,0)+2)
 H4
 =H3+INDEX($D$1:$D$11,F4,1)/10
 F4とH4も必要分下にフィルコピー

 F4とH4の範囲は適宜直してください。

 あんまいい数式じゃないけど。こんなカンジかね。
 (1111)

コメント返信:

[ 一覧(最新更新順) ]


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