• 締切済み

エクセルの範囲指定

セルの範囲指定で、例えば、「=average(A1:C30)」という計算式を入れるとします。 そこに、もう1つセルを足す場合は、「,F1」を足して、「=average(A1:C30,F1)」と すると思うのですが、その逆は無いのでしょうか? 「A1:C30」という範囲指定の中の「B20」というセルは省いて範囲指定したい場合は、 なにかいい手が無いでしょうか? エクセルにはそんな考え方はありませんか? どなたかよろしくご教授ください!!

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

機能は思いつきませんが、「なにかいい手が無いでしょうか?」ということなのでユーザー定義関数を作ってみました。他の統計関係の関数も同じように対応できるでしょう。 =EXTaverage(主範囲,"追加範囲","除外範囲") とします。 セルにセットする時は =EXTaverage(A1:C20,"C22:C24","B10:B12,C19") のようにします。 主範囲,追加範囲のみの場合は(主範囲,"追加範囲") 主範囲,除外範囲のみの場合は(主範囲,,"除外範囲") 主範囲のみの場合は(主範囲)とします。 この例では、セル範囲A1:C20にセル範囲C22:C24を追加し、セル範囲B10:B20とC19を除いた範囲の平均を計算します。 時間をかけていないので誤設定した場合エラーになります。しかし計算が不正になるようなセルの選択は一応チェックしています。ご容赦下さい。 真の回答とは言えないかもしれませんが参考にして下さい。 '***** 拡張平均計算 ************************* ' rgMain :主範囲 ' strPlus:追加範囲。""で囲んで設定します。 ' strSubt:除外範囲。""で囲んで設定します。 '******************************************* Public Function EXTaverage(rgMain As Range, Optional strPlus, Optional strSubt) Dim calcSum As Double '値の計 Dim calcNum As Double '数値入力されたセル数 Application.Volatile '自動再計算関数にする '主範囲と追加範囲の重複チェック If Not IsMissing(strPlus) Then If Not (Intersect(rgMain, Range(strPlus)) Is Nothing) Then EXTaverage = "エラー": Exit Function End If End If '主範囲と除外範囲の包含チェック If Not IsMissing(strSubt) Then If Union(rgMain, Range(strSubt)).Address <> rgMain.Address Then EXTaverage = "エラー": Exit Function End If End If '計算する With Application calcSum = .Sum(rgMain) '主範囲 calcNum = .Count(rgMain) If Not IsMissing(strPlus) Then calcSum = calcSum + .Sum(Range(strPlus)) '追加範囲 calcNum = calcNum + .Count(Range(strPlus)) End If If Not IsMissing(strSubt) Then calcSum = calcSum - .Sum(Range(strSubt)) '除外範囲 calcNum = calcNum - .Count(Range(strSubt)) End If End With 'ゼロ判定 If calcNum > 0 Then EXTaverage = calcSum / calcNum Else EXTaverage = "エラー" End If End Function

すると、全ての回答が全文表示されます。
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.3

選択されたセル以外のセルを計算の対象にしたいということですよね。答えはそような機能はEXCEL2000までのバージョンにはありませんので、出来ません。VBAでプログラミングすれば出来るかもしれませんが・・・(ホントに出来るかは不明) そもそも、CTRLキーを押しながらのクリックで、複数選択したセルの一部を解除することも出来ませんしね。 面倒ですが、マウスでドラッグ&クリック若しくはキーボードで入力のどちらかになってしまうかと思います。

すると、全ての回答が全文表示されます。
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.2

結果から言えば、対象外のセルを除く考えはエクセルにはない様です。 手で、a1:a30,b1:b19,b21:b30,c1:c30と入力が面倒というのであれば、ctrlキーを押しながら対象セルをクリック又はドラッグして範囲を指定するとキーボードを打つ必要はなくなります。(このとき同じセルを選択した場合、複数回入力したことになってしまうので注意が必要です)

noname#40795
質問者

補足

ctrlキーを押しながらは使っているのですが、 例えば、もう1つセルを足す場合に、ctrlキーを押しながら F1を押すと、数式上では「,F1」と入力されるように、数式上では 「a1:a30,b1:b19,b21:b30,c1:c30」と表示されても、 ショートカットキーの機能として、どこか押しながら B20を押すと、「a1:a30,b1:b19,b21:b30,c1:c30」と表示される という機能はやはり無いのでしょうか?

すると、全ての回答が全文表示されます。
  • taropoo
  • ベストアンサー率33% (34/103)
回答No.1

(A1:C19,A20,C20,A21:C30) または (A1:A30,B1:B19,B21:B30,C1:C30) とするしかないような気がしますが。

すると、全ての回答が全文表示されます。

関連するQ&A