痔になりやすい生活習慣とは?

化学系の仕事をしていて実験の値をエクセルでまとめています。
こんなことは出来るのでしょうか?

1分ごとに測定を行いますが、はじめの数分は0の値が続きます。
簡単に例を挙げるとこんな感じです。
【例】
分→測定値
00→0
01→0
02→0
03→0
04→2.36
05→4.83
06→3.52

このとき初めて数値が0以外の値が出たときの2.36の値を適当なセルに表示させるにはどのような方法がありますか?測定値の数値には規則性がないのでMAX関数やMIN関数が使えません。何かいい方法教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

A列にデータがあるとしたら、


=INDEX(A1:A99,MATCH(TRUE,A1:A99<>0,0))
を配列数式として入力(Ctrl+Shift+Enter)
でいかが?

この回答への補足

早々のご回答アリガトウございます。
さっそくA列にデータを入力し、
>=INDEX(A1:A99,MATCH(TRUE,A1:A99<>0,0))
をペーストしてみましたがうまくいかず#N/Aが表示されてしまいます。

補足日時:2007/08/23 21:13
    • good
    • 2

◆こんな方法もありますよ


=INDEX(A:A,MATCH(1,INDEX(1/(A:A>0),),0))
    • good
    • 5

#1です。



通常の数式は、数式を打ち込んだ後Enterキーで確定しますが、
配列数式として入力する場合は、数式を打ち込んだ後、
CtrlキーとShftキーを押しながらEnterキーを押して確定します。

どうしても上手く行かない場合は、泥臭いですが、下記の数式をお試しください。
こちらは通常どおりEnterキーのみで確定しても機能します。
=SUMPRODUCT((MAX((A1:A99<>0)*1/ROW(A1:A99))=1/ROW(A1:A99))*A1:A99)

#2さま
フォローありがとうございます。
    • good
    • 2

配列数式で


=INDEX($A$1:$A$99,MIN(IF(A1:A99<>0,ROW(A1:A99),99)),1)
と入れて、SHIFT,CTRL,ENTERを3つ同時押し。
例データ
0
0
0
0
0
12
3
4
結果
12
    • good
    • 0

#1さんの回答で出来ると思いますが、


念のため、確認
     A     B
1    分    測定値
2    0     0
3    1     0
4    2     0
5    3     0
6    4     2.36
7    5     4.83
8    6     3.52

なら、
=INDEX(B2:B99,MATCH(TRUE,B2:B99<>0,0))
を式入力した後、Ctrl+Shift+Enter
を入力します。
{=INDEX(B2:B99,MATCH(TRUE,B2:B99<>0,0))}
のように配列式で表示されます。

({})は入力するためにフォーカスを与えると{}が消えます。
なお、格納最大行は99行で例示しているので任意に変更してください。
Excel2003で確認しています。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、指定の値よりも大きい数字を最初に越えたときの列番号を返すには?

テストの点数で、初めて40点を下回ったときの日付と、初めて80点を越えた時の日付を返すような関数を組みたいのですが、どうやればいいか分かりません。MATCH関数を使うような気がするのですが、そこから先が分かりません。

例)
1月1日  43点
1月2日  83点
1月3日  81点
1月4日  26点
・・・
この例であれば、80点を初めて越えるのは「1月2日」、
初めて40点を下回るのは「1月4日」という形で答えを返したいのですが、どなたかお知恵を貸してください。よろしくお願いします。

Aベストアンサー

◆こんな方法はいかがでしょう
>80点を初めて越えるのは「1月2日」
D2=MIN(INDEX((B2:B10<=80)*10^5+A2:A10,))

>初めて40点を下回るのは「1月4日」
D5=MIN(INDEX(((B2:B10>=40)+(A2:A10=""))*10^5+A2:A10,))

Q【EXCEL】空白でないセルの位置を検索したい

初めまして。
EXCELの関数を利用して、
下記のようなことをしたいと思案中です。

 A B C D E F
1* 1   2   3
2* 1   2 3 3
3* 1   2   
4* 1   2 3 3

*が計算式を挿入したい箇所です。
各行の最初のブランク位置を検索したいです。
ブランクの個数は不定ですが、
B~Fのセルに入れるデータは全て数値です。

MATCH関数を使い、MATCH("",B3:F3)のようにしても、
#N/Aとなってしまいます。

何か良い方法はないでしょうか?
ご教授頂けますようよろしくお願い致します。

Aベストアンサー

配列数式を使ってようやく出来ました。
下は1行目のF列までの関数です。
{=MIN(IF(ISBLANK(B1:F1),COLUMN(B1:F1),""))}
入力する際に、コントロールキーとシフトキーを押しながらEnterキーを押してください。
指定した範囲に空白セルが無い場合は、0になります。それ以外は範囲中の最も左にある空白セルの列番号が数字で返されます。

QExcelで、条件と一致する最後のセルを検索したい

Excelで、条件と一致する最後のセルを検索したいのですが、どの関数をどのように使えばいいかわかりません。
どなたかお力をお貸し下さい。

問)
日付  社名  品名  個数
1/1   A    あ    1
1/1   C    い    2
1/2   B    う     3
1/2   A    え    4
1/3   C    お    5
1/3   A    あ    3

答)
A社の最終購入日は  1/3 あ 3
B社の最終購入日は  1/2 う  3
C社の最終購入日は  1/3 お 5

となるようお願いします。

Aベストアンサー

エクセルには「最後の該当」を検索する関数はありません。
無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。

A2:
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<COUNTIF(C:C,C2)),"",C2)
以下コピー

答えは簡単なVLOOKUP関数を使うだけです。
H2:
=IF(COUNTIF($A:$A,$G2),VLOOKUP($G2,$A:$E,2,FALSE),"")




まぁ一応ご参考に作業列を使わない方法:
H2:
=IF(COUNTIF($C:$C,$G2),INDEX(B:B,MAX(IF($C$2:$C$999=$G2,ROW($C$2:$C$999)))))
と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する

説明は省略しますので、ブラックボックスで使ってください。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelで、指定した範囲の先頭のセルの値を取得するには?

Excelで、指定したセル範囲(1列)で、空白を除いた先頭のセルの値を取得する
方法はありますでしょうか?
できればマクロを使用せずに関数だけでできるほうがありがたいです。

例)
 | A
------------
1 |(空白)
2 | ○
3 | △
4 | ×
5 | □

の場合、検索範囲にA1:A5 を指定すると、○が値として返ってくるような感じです。

Aベストアンサー

=INDIRECT("A"&MIN(IF(A1:A10<>"",ROW(A1:A10),9999)))
と入れてSHIFT+CTRL+ENTERのキーを同時押し。配列数式。
A10の部分2箇所はデータのある可能性のある行の最大行に変えてください。

Q値が入っている一番右のセル位置を返す方法

たとえばA行に値(文字列)が横に並んでいるとして
値が入っている一番右のセルの位置を返すようにするにはどのようにすればいいでしょう?

Aベストアンサー

セルの位置を返したいのであれば
=CHAR(MATCH(MAX(1:1)+1,1:1,1)+64)&1
でどうでしょうか。

Qセル番号を返す関数

エクセルで、セル番号を返す関数はありますか??
セルの内容ではなくて、番号です。(A1、B3など)
調べてみましたがなかなか見つからなかったので、
わかる方教えてください。
宜しくお願い致します。

Aベストアンサー

文字として"C4"を返す。
=ADDRESS(ROW(C4),COLUMN(C4),4)

式を入力したセルの位置を文字列で返す。
=ADDRESS(ROW(),COLUMN(),4)

ADDRESSの3つ目の引数を変えると
$C$4
$C4
C$4
C4
の4つの形に出来ます。

QExcel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合

MATCH関数で、検索した値が複数ある場合に1つしか出なくて困っています。
(例)
   A B C D
1 年月日 種類 番号 備考
2 4月1日 肉類 1
3 4月2日 野菜 2
4 4月3日 肉類 1
5 4月4日 果物 2
6 4月5日 野菜 1
7 4月6日 果物 3
8 4月7日 果物 2
9 4月8日 肉類 1

この表で、D9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。

INDEX(A2:A8,(MATCH(B9,B2:B8,0)+MATCH(C9,C2:C8,0))/2)
としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。
どのようにしたら良いでしょうか?
Excel2003です。
よろしくお願いします。

Aベストアンサー

MATCH関数を使用しませんが、D9の書式を日付にして、
=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Q条件に合った最初の行番号を表示したい。

excelで、Sheet1に、Aに丁目、Bに番地、Cに号を割り振りました。
  A  B  C
1  1  1  15
2  1  1  18
3  1  1  21
4  1  2  7
5  1  2  14
6  2  1  33
7  2  1  36
8  2  1  37
9  3  1   15
そこで、条件に合った最初の行番号を表示したいのです。
例えば、2丁目1番地の最初は、6行目なので、F1などに6と表示する方法を知りたいのです。
1丁目2番地だったら、F1は4になるようにしたいのです。
よろしくお願いします。

Aベストアンサー

こんばんは!

>例えば、2丁目1番地

D1sるに○丁目 の○の数値、E1セルに△番地 の△数値を入力するとします。

F1セルに
=MIN(IF((A1:A1000=D1)*(B1:B1000=E1),ROW(A1:A1000)))

これは排列数式になりますので、Shift+Ctrl+Enterで確定してください。

この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → F1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング