• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:異常値の何行目かの計算式)

Excel2016での異常値の行数目を表示する計算式

このQ&Aのポイント
  • Excel2016で、異常値の行数目を表示する計算式について教えてください。
  • 異常値として表示されるセルが複数ある場合、最も下に表示される異常値の行数目を求める方法を知りたいです。
  • 正常値と異常値が入り混じったデータで、異常値の行数を自動的に表示させるExcelの計算式について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.4

こんばんは、No1です No2さんの回答を範囲を広げるだけで、 数式バーに =IF(MATCH("異常値",A2:A100000)=0,"異常なし",MAX(IF(A2:A100000="異常値",ROW(A2:A100000),""))&"行目") と入力して、Ctrl+Shift+Enter で確定(配列数式として入力)すればいいです。

miya_HN
質問者

お礼

回答ありがとうございます。 この計算式で異常値でないデータで「何行目」と表示されてしまったため、若干手を加えると「何行目」という表示はなくなりました。 かなり、別シートで計算式を入れて重たくなってるのでこの式はシンプルでいいですね。 ありがとうございました。

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

その他の回答 (7)

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.8

ひとことだけ。 Excelの処理速度は、使用するセルの数より、セル内の計算式の 複雑さに依存する部分が大きいです。セルを分割して式を単純化 することも考えた方がいいです。 特に、長文のIF文は処理に時間がかかります。

miya_HN
質問者

お礼

回答ありがとうございます。 おっしゃる通りですね。 元のデータを基に、1つのセル内に非常に長い計算式に加え、IFも入っています。 それが40万近いセルに入っており、さらに別のシートで他の計算もしています。 そうしなければ、ある程度の正確なデータが得られません。 ある程度とは、関数やVBAをもってしても、はかれない部分があるためです。最終的には、人間の判断が必要になってくる部分があるので確実なものは作れません。 「セルを分割して式を単純化する」という考えは確かにそう思います。 そのようにすれば、ファイルの起動・メモリの使用率・処理速度は若干変わってくるかもしれません。 参考にさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

#5です。 #5の回答は、私自身やや不満があり、その後考え着いたのは、下記のような問題なら、使えそうだということです。ご参考に。 「日々商品の相場が上下します。それを記録した表の各行で、10円以上動いたら、異常値とA列に表示(多分関数で)されるとします。そのうち一番最近の行(1番下の行の)(だけ)を目立つようにする」という問題だと仮定します。 エクセルの「条件付き書式」を使う。 式を複写しないでも良いように、(例えば)A2からA20までを範囲指定して、条件付き書式の設定に入ります。 A20の部分は、データのない行まで余分に範囲指定してもOKのよう。 式は =AND(A2="a",COUNTIF($A$2:A2,"a")=COUNTIF($A$2:$A$20,"a")) 書式を「セルの塗りつぶし色」を好みで設定。 設定範囲を範囲指定しておいて、条件付き書式を設定することで、上記の関数式(らしきもの)はセルに複写などする必要はありません。 テストデータ A1:A20 a s d a e r a a s f a f a s d a q s a A20が設定色になります。A列のデータの変化に即応します。20行のaをxに変えると 17行目のaのセルが色がつく。 aは、質問に合わせて言えば、式の中で"異常値"という文字列にします。

miya_HN
質問者

お礼

回答ありがとうございます。 時間を割いていただき、大変感謝しております。 なるほど、「条件付き書式」を使用する方法もあるんですね。 今回のExcelファイルで採用するかは分かりませんが、回答者様の計算式を参考にさせていただきます。 以前の回答者様の回答で自身が納得されていないということで、さらにお考えになられて回答してくださったこと、そこまで考えて回答をいただいたことに大変感謝します。 誠にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.6

素直に計算列を1列作れば簡単院解決する問題なんじゃないですか? 計算列は、遥か彼方のAA列とかでも全然問題ないですし、何なら シート換算賞を使って別シートでもオッケー。 今、目の前にExcelのない環境なので方針だけしか示せませんが、 「計算列に、異常値ならその行番号を表示する」「計算列全体の 最大値を表示する」で済んじゃうと思いますけど・・・。

miya_HN
質問者

お礼

回答ありがとうございます。 別シートで複雑な計算式をしており、起動するだけでもかなり時間がかかってさらに、データを入力すると計算に時間がかかってしまうんですよね。 なのでできる限り、1つのセルでその計算式を出した方が助かります。 最初からVBAで作成しておけばもしかしたら時短になり、よかったのかもしれませんが、それもなかなか複雑でして・・・。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

1列特別につかって(下記ではB列)、式を下方向に複写してよいなら、 例データ A1:A14 データ 最終行 a s d a e r a a s f a f a B2に =IF(AND(A2="a",COUNTIF($A$2:A2,"a")=COUNTIF($A$2:$A$14,"a")),ROW(A2),"") と入れてB14まで式を複写。 一番下行のaのセルの行番号14がB14に出る。 チェック対象行数も多いようなので、この考えはダメかな。 ーー 全行に式を複写せず、あるセルに上記の最終の行番号を出したいなら、VBAを使ってユーザー関数を作ってしまう手もある。それなら今までの関数でやってしまったという、行きかかりは関係ないでしょう。 式の複写はセルに+を出してD&Dでなく、B2の式を3-30000行(例)を範囲指定してCTRL+Vで貼り付けで行えば少し簡単。 ーー 関数では複雑で、配列数式なら少し式が簡単になるのかな。

miya_HN
質問者

お礼

回答ありがとうございます。 う~ん、そうですね。 あまり計算式が増えると今でさえかなりメモリを食っているので1つの式でまとめられるといいですね。 後、確かに今までの関数はそのままで最終行の「異常値」まで排除し、その後のデータをVBAで表示させる手もありますね。 その方が手動でしなくて済むのでいいかもしれません。 VBAで作成するとなった場合、改めて質問させていただきます。 そのときはよろしくお願いします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問の表現に気を付けるべきだ。 むしろA列の式を質問には開示すべきだ。回答の参考になるから。 たとえば条件付き書式などの方策がダメか考えたりできるから。 ーー 本質問は(本来やりたいのは)エクセルの関数を用いて「条件に該当する行(複数あり)を、別または同一シートに、抜き出して表示したい」という問題だろう。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10127832215 のベストアンサーの式を見てください。 これはエクセル関数では、式が非常に複雑になる問題です。 作業列を用いれば、やや短い式になるが。 ーー 本件では「最も下の異常値が表示されている行数目」という形で妥協(後退)しているが。 ーー 「異常値」というコメント(実は式の値)がでているなら、フィルタで絞れば、出ている行全体がわかる。 ーー 最下行位置の「異常値」を見つけたければ、該当は1つだから、関数でもできるだろう。 しかし複雑な式になるようだ。 >条件を満たした最下行の値を表示、でWEB照会 http://okwave.jp/qa/q8444436.html 今ではWEBには、類似例が出ていることは素晴らしい。 しかし、私ならVBAでやる。1回A列を上からデータ最下行までIF文で、舐めたら(判別したら)仕舞だからだ。

miya_HN
質問者

お礼

回答ありがとうございます。 説明不足で申し訳ありません。 「A2」の式は次の通りです。 =IF(計算!$B2="","",IF(ISERROR(FIND("異常",CONCATENATE(計算!$B2,",",計算!$C2),1)),CONCATENATE(計算!$B2,",",計算!$C2),"異常値")) 「A3」の式は、 =IF(計算!$B3="","",IF(ISERROR(FIND("異常",CONCATENATE(計算!$B3,",",計算!$C3),1)),CONCATENATE(計算!$B3,",",計算!$C3),"異常値")) と、このように「A380001」まで続いています。 式は見ての通り数値ではありません。 VBAでやった方が確かに手順に沿ってできたり、複雑にならずに済むのですが、もうすでに別のシートで計算してしまっているため最初から作り直す必要が出てきてしまいます。 複雑になってしまいますが、あくまで関数でこのような式を作りたいのですが、恐れ入りますが時間を割いていただけないでしょうか? 申し訳ありませんが、もう一度回答よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

=MAX(IF(A2:A1000="異常値",ROW(A2:A1000),"")) 【お断り】上式は配列数式として入力のこと

miya_HN
質問者

お礼

回答ありがとうございます。 これは、配列数式なんですね。 参考にさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは =IFERROR(MATCH("異常値*",A:A,1)&"行目","") でどうでしょうか?

miya_HN
質問者

お礼

回答ありがとうございます。 =IFERROR(MATCH("異常値*",A:A,1)&"行目","") この計算式だと異常値があっても全て正常値であっても、どうしても「380001行目」となってしまいます。 様々な計算を別シートでしているため、非常にメモリを食ってしまい、「A2」から「A380001」までしか計算式を入れていません。 また、「A2」の式は次の通りです。 =IF(計算!$B2="","",IF(ISERROR(FIND("異常",CONCATENATE(計算!$B2,",",計算!$C2),1)),CONCATENATE(計算!$B2,",",計算!$C2),"異常値")) 式は見ての通り数値ではありません。 例で数値のみしか記載していませんでした。 説明不足で申し訳ありません。 申し訳ありませんが、もう一度回答よろしくお願いします。

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

関連するQ&A

  • 多数のシートに同じ計算式を入れる。

    多数のシートに同じ計算式を入れるのですが、 シートによって、行の長さが違います。 全てのシートを選択し=VLOOKUP(D:D,氏名!E:E,5,FALSE)といった式を、E7からフィルハンドルを使い E200くらいまで(どのシートも大体200行もない) ドラッグしているのですが、シートによっては100行くらいしか無いので、それ以降は、エラー#N/Aの表示になってしまいます。 全てのシートにエラー表示を非表示にすれば消えるのですが、最初から一番下の行まで、計算をするような 設定はできるのでしょうか。

  • VBAで検索して、行をコピー&追加したい

    Excel2010で以下のことをしたいのですが、VBAがあまりできないのでやれません。 どうか助けてください。 ・sheet1のA列に検索用の番号(例として商品番号)が入力されています。 ・sheet2はデータベースで、A列に商品番号B列に商品名、C列に国名、D列に価格・・~その後J列まで情報が入っています。(行数は1万行) ・sheet1に入っている商品番号でデータベースから行をピックアップし、該当の行をsheet1のB列以降にコピーしたいのです。 (シート3を新しく作っても構いません。やりやすい方で) ・ただし、同じ商品番号で複数の行がヒットしますので、複数の行がヒットしたら行を追加しながら、行をコピーしたいです。 どのように書いたら良いか参考になるURLだけでもご教授ください。 よろしくお願いします。

  • エクセルで2行毎ずらして表示するには?

    ひとつのシート内に複数の表を貼り計算をしています。 複数の表の下に集計結果を表示しました。 集計結果は月ごとに昇順で表示しています。 集計結果の月ごとの部分を新たに増やしたいのですが コピーをすると「複数の表のなかの2行ある計算範囲」が1行ずつしか下に 移動しませんが2行ずつ移動する簡易な方法はありますでしょうか?

  • エクセルを使った計算式

    エクセルの計算式などについて教えて下さい。 製品情報が記載されたαとβ2つのシートがあり、製品情報はAからN列までの1行で表現されていて、数量、品名などが違う場合があります。 その二つの製品数などのデータを違うシート上で、αとβのA列(セル)の情報が同一の場合に βのシートの当該データの下に表示する。 2つのデータ(2行)の下は1行、空欄にしたいです。 A列の情報が違う場合は、βのシートのデータを残し(表示)、αのデータは表示しない。 お忙しいところ、お手数をおかけいたしますが、よろしくお願いいたします。

  • 教えてGOOの画面異常

    パソコン画面で、回答の表示がおかしいです。 複数回答がある場合。 回答のNo1に表示の異常がが多いです。 たとえば、6行の文章の回答の場合。 4~6行目が上に、 1~3がその下に表示。 しかも重なっていて見にくいです。 OKウェブでは正常表示されます。 OSは7、IE9。

  • 教えてGOOの回答画面異常

    パソコン画面で、回答の表示がおかしいです。 複数回答がある場合。 回答のNo1に表示の異常がが多いです。 たとえば、6行の文章の回答の場合。 4~6行目が上に、 1~3がその下に表示。 しかも重なっていて見にくいです。 OKウェブでは正常表示されます。 OSは7、IE9。

  • excel マクロで複数シート検索し行をコピー

    excel2010 マクロで下記のようなことをしたいのですが どのようにしたら良いか教えていただけないでしょうか? (1)sheet1のA1を検索用の欄とする (2)sheet2・sheet3・sheet4にはそれぞれデータを入力しておく (A列~H列 まで使用し、行数は多くても500程度) (3)sheet1のA1に検索したい単語を入力することで、sheet2・sheet3・sheet4全てのA列を検索する (4)一致(部分一致)したら、その行をsheet1の10行目以降にコピーする なお複数ヒットすると思われるため、複数ヒットした場合には行を追加しながらコピーしたいです。 マクロでは無理なのでしょうか? どのように書いたらよいか、参考になるHPでも助かりますので、教えていただきたく よろしくお願いします。

  • EXCEL2003出納帳残高欄の、計算結果がある最終行の数値を取り出し

    EXCEL2003出納帳残高欄の、計算結果がある最終行の数値を取り出したいのですが     A     B     C     D 1  日付   入出金   残高 2  繰越          30 3 8/1   100   130 4 8/2  -130     0 5 8/2    40    40 6               - 7               - 8               - 9                現在残高 40        途中には空白行はなく順に入力します 入力する行数は未確定です 残高は"0" の場合もあります C列2行目は 数式「=B2」  C列3行目から8行目までは 数式「=IF(B3=0,0,C2+B3)」 現在残高を表示したいのですが、 ここD列9行目には数式 「=LOOKUP(10^5,C3:C8)」 としてますが、 C列の6~8行目までは計算式が入ってるので、 その値”0”となってしまうようです。 また、 数式「=INDIRECT(ADDRESS(COUNT(C2:C8)+1,3))」 という式も入れてみましたが、”0”となってしまいます。 計算結果のある最終行の値 "40" にするにはどうしたらよいでしょうか?

  • EXCELLにて。シート間の計算式で、行を挿入しても計算式が反映されるようにしたい。出来る?

    こんにちは。文章だと表現しにくいのですが・・。 レシピがカンタンに出来るように、まず「シート1」に原材料一覧をつくり、「シート2~」以降にレシピをつくり、レシピの横に「シート1」と同じ原材料一覧をはりつけて、原材料名、原価がすぐわかるようにしました。 今は、シート10位までしかないので、「シート1」のセルを、「シート2」から「シート10」まで、9回コピーしているのですが、これがシート100とかになると、面倒だと思い・・。 以降、分かりやすいように「生き物」の名前で説明させて頂きますが・・。 「シート1」のA1、A2と順番にA10まで名前、B1、B2と順番にB10まで年令を入れます。 例えばA1から順にA1は「アリ」A2は「イルカ」A3は「ウサギ」A4は「おたまじゃくし」というように・・。 ソレを「シート2」以降に貼り付けしています。 計算式としては 「='シート1'!A1」「='シート1'!A2」 と言うような式を「シート2」のA1もしくは違うセル(違うといってもH3、H4~H12など、同じように縦に貼り付けるのは一緒です)に貼り付けています。 ところが、「ウサギ」と「おたまじゃくし」の間に「えび」を忘れていた場合、「シート1」の「ウサギ」と「おたまじゃくし」の間に「セルを挿入」して、「えび」を入れることは簡単なのですが、「シート2」以降には反映されておらず、相変わらず「ウサギ」「おたまじゃくし」のままになっています。B1、B2の行も同じくですが。 そこで、質問・・。 「シート1」のA3(ウサギ)とA4(おたまじゃくし)の間にセルを挿入した場合 {結果A3(ウサギ)、A4(えび)、A5(おたまじゃくし)となる} に「シート2」以降のセルにも、同時にセル挿入(A4のえび)されるような方法(計算式)はございますか? どなたか、お教え下さい。稚拙な文面お詫び致します。

  • エクセルの計算式

    お世話になります。 エクセルの計算式が分かりません。 シート1 L1150 合計 P1155 1194 とあるとします。 シート2のA1に 1194と表示させたいのです。 =シート1!P1155だと行の追加の際に都合が悪いのです。 そこで、”合計"から右へ4下へ5のような計算をしたいのです。 宜しくお願いします。

専門家に質問してみよう