[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データを同じ割合で変更するには?』(ちび)
データの編集で(例)A社100としてB社を65C社を70と設定した後で、 今度はB社を100として、あとのA社、C社のデータを同じ割合で変更する関数を作成したいのです。
ちなみに小数点第1位まで計算対象にしています。 関数は何を使えば良いでしょうか?宜しくお願いいたします。
これは2002年8月24日15時9分頃投稿された未解答の過去ログです。
A1から下へA社B社C社と書き込み B1から100 65 70 と設定します。 C1へ=B1/SUM(B$1:B$3)下方向へコピー D2へ100と書き込んだばやい
D1=C2*D2/B2*C1/C2*B1/C1 D3=C2*D2/B2*C3/C2*B3/C3
どうも冴えないなぁ・・・。
(弥太郎)
上の式は D1=C1*D2/B2*B1/C1 D3=C3*D2/B2*B3/C3 で事足ります。
こんな関数有ったような気ぃがするんですけど(期待値を返す)どなたかご存じ おまへんけ?
関数をご所望みたいなんで、とりあえず。
B1〜B3を選択して=Chibi(B1:B3,B2,100)をCtrl+Shift+Enterで確定します。
(弥太郎)
'--------------------------
Function Chibi(adrs1 As Range, adrs2 As Range, data As Double)
Dim i As Integer, data_1 As Double, totl As Long, x, y
totl = WorksheetFunction.Sum(adrs1)
ReDim y(1 To adrs1.Rows.Count)
For i = 1 To adrs1.Rows.Count
y(i) = adrs1(i) / totl
If adrs1(i).Address = adrs2.Address Then data_1 = adrs1(i)
Next i
ReDim x(1 To adrs1.Rows.Count)
For i = 1 To adrs1.Rows.Count
If adrs1(i).Address <> adrs2.Address Then
x(i) = Round(y(i) * data / data_1 * adrs1(i) / y(i), 1)
Else
x(i) = data
End If
Next i
Chibi = Application.Transpose(x)
End Function
2008/9/5 投稿
2008/9/5 11:04 変数宣言欄をしゅうせぇ。 (弥太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.