[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データを同じ割合で変更するには?』(ちび)
データの編集で(例)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.