web-dev-qa-db-ja.com

式への入力としてのアクティブセル

アクティブセルを使用できるかどうか疑問に思っていました。つまり、関数の引数として、マウスをクリックした後、正方形の境界線で特定の時間に「強調表示」されるセルを意味します。

たとえば、3つの重みを持つ加重平均を使用してテーブルを作成しました。w1は列ヘッダーに指定され(以下のファイルを参照)、w2は行ヘッダーに指定され、w3はw1とw2を1に補完します。

私がやりたいのは、テーブルの外側のセルに、テーブルのセルが選択されたときに得られる平均の重みを表示させることです。

例:スクリーンショット: http://imgur.com/emmBH5S/

ファイルはここにあります: https://drive.google.com/file/d/0B_7-00fdslR7Tm11ODRVS296ckk/

ここでは、セルK12がアクティブであり、K12の場合w1 = 0.2、w2 = 0.15であるため、上記の重みテーブル(行3〜4)のセルは、アクティブセルの重みに従って適切な値を取得します。 (もちろん、説明のために手動で作成しました)

それを行う方法はありますか?できればVBAなしで可能であれば非常に役立つものを見つけることができませんでした...

前もって感謝します! A

5
Optimesh

VBAは必要ありません(ただし、VBAを使用することをお勧めします)。

W1: =INDEX($F$8:$AA$29,1,MAX(COLUMN(INDIRECT(CELL("address")))-(COLUMN(F8)-1),1))
W2: =INDEX($F$8:$AA$29,MAX(ROW(INDIRECT(CELL("address")))-(ROW(F8)-1),1),1)
W3: =J4-(G4+H4)

CELL引数を持つaddress関数は、アクティブなセルのアドレスを返します。 INDIRECTを使用して、そのアドレス(文字列のみ)をセル参照に変換します。それから私は使用します

=INDEX(Range, 1, Column of Reference)

w1値を取得するには-アクティブセルと同じ最初の行と同じ列の値。数式はどのセルをアクティブにするかを気にしないので、そこにMAXを貼り付けて、範囲外の場合はゼロを返すようにしました。

セルを選択するだけでは変更がトリガーされないことに注意してください。セルを選択したら、F9キーを押してシートを計算し、適切な結果を取得します。

11
Dick Kusleika

VBAを使用する必要があります。例に従って、このコードをSheetオブジェクトに配置します

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row > 8 And Target.Column > 6 Then
        Range("G4").Value = Cells(8, Target.Column).Value
        Range("H4").Value = Cells(Target.Row, 6).Value
        Range("L4").Value = Cells(Target.Row, Target.Column).Value
    End If
End Sub

セルL4は、他の数式で使用できる選択したセル値を示します。

[〜#〜]編集[〜#〜]

コードを配置するには、VBAウィンドウに移動し、データがあるSheetオブジェクトをダブルクリックします。 (写真の矢印でマークされています)次に、youtコードを貼り付けます。 Code in Worksheet object

5
hstay