[[20020824150914]] 『データを同じ割合で変更するには?』(ちび) ページの最後に飛ぶ

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

 

『データを同じ割合で変更するには?』(ちび)

 データの編集で(例)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.