非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得 | |
---|---|
[134638] 非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ なんでやねん -(2024/07/25(17:01)) □U R L/ はじめて質問します。 シートの条件 1.テーブルシート:テーブル名=Module 2.タイトル行:12 3.オートフィルタ:12行最終列まで 4.外れ値を除外した平均値を計算するセル:L10〜最終列 5.最高値から除外する値(以上):セルL6〜最終行(ユーザー定義関数から取得…正しい値です) 6.最低値から除外する値(以下):セルL7〜最終行(同上) 7.対応するテーブルのデータはゼロを含めた小数点付き数値 8.マイナス値はなし 現状 8.外れ値を除外した平均値を計算するセルに =AVERAGE(IF(SUBTOTAL(2,Module[設備a])*(Module[設備a]<L6)*(Module[設備a]>L7),Module[設備a],"")) と入力しています。 9.結果にばらつきが出てしまいます。 たとえば (1)L13〜L35にゼロを含む小数点の値が順不同で入力されている (2)K列をオートフィルタで絞り込み、L列の結果が上から 59.39,0,2.99,139.8,12.39,0,1.17,2.26,32.56 となった (3)この時の除外数値(以上)は139.8、(以下)は0 である場合 正しい結果は34.78だと思うのですが計算結果は28.8475となっています。 質問 正しい値を取得する関数を教えていただけないでしょうか。 この値を求めるのにvbaは使いたくないです。 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Office365 ++++++++++++++++++++ |
[134639] Re[1]: 非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得- ■記事引用/メール受信=OFF■ □投稿者/ なんでやねん -(2024/07/25(17:10)) □U R L/ すみません。タイトルが質問とずれています。 正しくは 「非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の値を除く範囲内で平均値を取得」 です。 |
[134640] Re[2]: 非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/07/25(18:19)) □U R L/ >59.39,0,2.99,139.8,12.39,0,1.17,2.26,32.56 その中で重複しているのは0だけですよね? 0を一つ除外して平均すると、31.32じゃないですか? 正解が34.78となるべき根拠が分からないのですが。。 あと、値は手入力ですか? それとも、エクセルが計算した結果値ですか (後者の場合、小数演算誤差を含んだ値となり、大小判定に影響を及ぼしますけども) |
[134641] Re[3]: 非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得- ■記事引用/メール受信=OFF■ □投稿者/ なんでやねん -(2024/07/26(06:11)) □U R L/ ああ、なるほど。 (1)除外最低値が0なので0の値は全て除外されるものと考えていました。 (2)値は全てRoundをかけた計算値です。 (1)について質問ですが、指定した数値を配列から全て除外して平均値を取得する方法はありますか? |
[134642] Re[4]: 非表示行を除くデータから重複値を除外した配列で,最高値,最低値からの指定の順位の値を取得- ■ ![]() □投稿者/ なんでやねん -(2024/07/26(07:22)) □U R L/ いま、下記の式で試したところ一応狙いどうりに動いているようです。 =AVERAGE(IF((SUBTOTAL(3,OFFSET(Module[設備a],ROW(Module[設備a])-MIN(ROW(Module[設備a])),0,1)))*(Module[設備a]>L7)*(Module[設備a]<L6),Module[設備a],"")) (copilot君とGeminiちゃんに少々手伝ってもらいましたが) また不明な点が出れば色々とお教えください。 ありがとうございました。 |
このトピックに書きこむ |
---|