深すぎる複数のネストされたIFの式を書き換える


17

セルの値を確認する簡単な数式を書きました。残念ながら、この式はExcel 2007バージョンには長すぎます。エラーは次のとおりです。

ドイツ語:Angegebene Die angegebene Formel kann nicht eingegeben werden、da sie mehr als 64 Verschachtelungsebenen verwendet。

英語:指定された式は、現在のファイル形式で許可されているよりも多くのレベルのネストを使用しているため、入力できません

数式を短くする方法はありますか?

「WENN」はドイツ語で「IF」を意味します。

   =WENN(N7>=100000000;0;
    WENN(N7>=99000000;1;
    WENN(N7>=98000000;2;
    WENN(N7>=97000000;3;
    WENN(N7>=96000000;4;
    WENN(N7>=95000000;5;
    WENN(N7>=94000000;6;
    WENN(N7>=93000000;7;
    WENN(N7>=92000000;8;
    WENN(N7>=91000000;9;
    WENN(N7>=90000000;10;
    WENN(N7>=89000000;11;
    WENN(N7>=88000000;12;
    WENN(N7>=87000000;13;
    WENN(N7>=86000000;14;
    WENN(N7>=85000000;15;
    WENN(N7>=84000000;16;
    WENN(N7>=83000000;17;
    WENN(N7>=82000000;18;
    WENN(N7>=81000000;19;
    WENN(N7>=80000000;20;
    WENN(N7>=79000000;21;
    WENN(N7>=78000000;22;
    WENN(N7>=77000000;23;
    WENN(N7>=76000000;24;
    WENN(N7>=75000000;25;
    WENN(N7>=74000000;26;
    WENN(N7>=73000000;27;
    WENN(N7>=72000000;28;
    WENN(N7>=71000000;29;
    WENN(N7>=70000000;30;
    WENN(N7>=69000000;31;
    WENN(N7>=68000000;32;
    WENN(N7>=67000000;33;
    WENN(N7>=66000000;34;
    WENN(N7>=65000000;35;
    WENN(N7>=64000000;36;
    WENN(N7>=63000000;37;
    WENN(N7>=62000000;38;
    WENN(N7>=61000000;39;
    WENN(N7>=60000000;40;
    WENN(N7>=59000000;41;
    WENN(N7>=58000000;42;
    WENN(N7>=57000000;43;
    WENN(N7>=56000000;44;
    WENN(N7>=55000000;45;
    WENN(N7>=54000000;46;
    WENN(N7>=53000000;47;
    WENN(N7>=52000000;48;
    WENN(N7>=51000000;49;
    WENN(N7>=50000000;50;
    WENN(N7>=49000000;51;
    WENN(N7>=48000000;52;
    WENN(N7>=47000000;53;
    WENN(N7>=46000000;54;
    WENN(N7>=45000000;55;
    WENN(N7>=44000000;56;
    WENN(N7>=43000000;57;
    WENN(N7>=42000000;58;
    WENN(N7>=41000000;59;
    WENN(N7>=40000000;60;
    WENN(N7>=39000000;61;
    WENN(N7>=38000000;62;
    WENN(N7>=37000000;63;
    WENN(N7>=36000000;64;
    WENN(N7>=35000000;65;
    WENN(N7>=34000000;66;
    WENN(N7>=33000000;67;
    WENN(N7>=32000000;68;
    WENN(N7>=31000000;69;
    WENN(N7>=30000000;70;
    WENN(N7>=29000000;71;
    WENN(N7>=28000000;72;
    WENN(N7>=27000000;73;
    WENN(N7>=26000000;74;
    WENN(N7>=25000000;75;
    WENN(N7>=24000000;76;
    WENN(N7>=23000000;77;
    WENN(N7>=22000000;78;
    WENN(N7>=21000000;79;
    WENN(N7>=20000000;80;
    WENN(N7>=19000000;81;
    WENN(N7>=18000000;82;
    WENN(N7>=17000000;83;
    WENN(N7>=16000000;84;
    WENN(N7>=15000000;85;
    WENN(N7>=14000000;86;
    WENN(N7>=13000000;87;
    WENN(N7>=12000000;88;
    WENN(N7>=11000000;89;
    WENN(N7>=10000000;90;
    WENN(N7>=9000000;91;
    WENN(N7>=8000000;92;
    WENN(N7>=7000000;93;
    WENN(N7>=6000000;94;
    WENN(N7>=5000000;95;
    WENN(N7>=4000000;96;
    WENN(N7>=3000000;97;
    WENN(N7>=2000000;98;
    WENN(N7>=1000000;99;
    WENN(N7>=500000;100;0)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

13
数式を構造化しておけば、質問ははるかに読みやすくなります(これに関する保留中の編集があります)。ここにxyの問題があるかもしれません。
mpy

1
最後の行は冗談を
-kmdreko

回答:


65

数式は次のものと同等だと思います:

=IF(OR(N7>=100000000,N7<500000),0,100-INT(N7/1000000))

今というケビンは式を再フォーマットしている、私は式はすべての場合に適切であることをはっきり見ることができます。

質問者のコメントのおかげで、同等のドイツ式は次のようになります。

=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))

素晴らしい!!! thx-de.excel-translator.de/translatorを使用して式を変換しました。ドイツ語では=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna

VBAを使用して、ユーザー定義関数を作成します。
user1750995

これは一般的な質問をスキップし、この特定の例についてのみ解決することを少し悲しいです。
パイプ

公式は正しいように見えますが、本当の答えは、これはtevlynが言うようにルックアップテーブル内で行われるべきだということです。Ifステートメントを使用してこれを実行しようとするのは悪い習慣です。
WhatEvil

5
@ pipe、@ WhatEvil-質問者は彼のIF声明のサイズを小さくしたかったので、彼のデータの構造のために(数学者に)明白な答えを出しましたが、それは何らかの意味で間違っているか悪い習慣であることに完全に同意しません。明らかに線形性の低い関数にはルックアップテーブルが必要になりますが、これらのデータでは過剰であり、最適と見なすことはほとんどできません。後者を回避できる場合、ルックアップより直接計算が常に優れています。
AFH

21

すべてのしきい値をワークシート上の範囲に入れ、近似一致のルックアップ式を使用します。

ルックアップ列の値でデータを昇順に並べ替えます。VLookupを使用する場合、ルックアップ列はルックアップテーブルの最初の列でなければなりません。インデックス/マッチコンボを使用することに満足している場合、ルックアップ列はテーブル内の任意の場所に配置できます。

以下のスクリーンショットには、セルA1〜B6のサンプルルックアップテーブルがあります。テーブルは列Aの値で昇順にソートされます。これは重要です。テーブルが昇順でソートされていない場合、次の式は機能しません。

セルE2の値は、列Aの値のいずれとも完全には一致しません。Vlookup式は、次に小さい値(つまり50)を見つけ、この近似一致のルックアップテーブルの列2から結果を返します。近似一致の場合、VLookupの4番目のパラメーターは「TRUE」または1でなければなりません。

式は次のとおりです。

=VLOOKUP(E2,$A$1:$B$6,2,TRUE)

そしてスクリーンショット:

ここに画像の説明を入力してください

Vlookupのドイツ語の名前はSVerweis(私は思う)であり、ドイツ語のExcelではコンマをセミコロンに置き換える必要があります。ドイツ語版Excelで「TRUE」が何であるかわかりませんが、TRUEに1を、FALSEに0を使用できます。

=SVerweis(E2;$A$1:$B$6;2;1)

Hoffentlich klappt's !!


こんばんは これを読んでみましょう-私にとって多くの仕事のように見えます。
thx-私は

数字が等間隔に並んでいる場合、数字の表に記入するのは面倒です。最初の2つの数字を入力して選択し、塗りつぶしハンドルをドラッグします。
テイリン

TRUEでありWAHRFALSEですFALSCH
IQV

そして、なぜダウン票ですか?
テイリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.