• ベストアンサー

行の一番右にある特定の数値を検索したい

ある数字を行の中から検索したいのですが、どなたかご教示いただけますと助かります。 例えば、下の画像のように1行目のある任意の場所からある任意の場所までマイナスの数字が並んでいたとします。 この場合マイナスの数字がある程度連続、または2行目のようにプラスの数字も混ざっている場合もあるとします。 このような状況で例えばA1~L1まで範囲指定してマイナスの左端がC1 マイナスの右端がJ1という結果を得たいのです。 ご存知の方いらっしゃいましたら、よろしくお願いします。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>このような状況で例えばA1~L1まで範囲指定してマイナスの左端がC1 マイナスの右端がJ1という結果を得たいのです。 L1に左端のC1をM1に右端のJ1を求める数式を提示します。 L1=ADDRESS(ROW(),MIN(INDEX((A1:K1<0)*COLUMN(A1:K1)+(A1:K1>=0)*(COLUMN(K1)+1),0)),4) M1=ADDRESS(ROW(),MAX(INDEX((A1:K1<0)*COLUMN(A1:K1),0)),4) 2行目以降はL1:M1を選択して下へオートフィルで必要数コピーしてください。 尚、中間のプラスの値は無視されます。

mazdaFD3
質問者

お礼

bunjiiさん、ご回答ありがとうございます^^ とても複雑で自力ではまったく思いつかない式でしたけど 求めていた結果が得られました。とても助かりました^^

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAのユーザー関数定義を使うのが、よさそう。 例データ b2:j7 1 2 3 -2 1 3 4 -4 1 1 2 3 2 1 -3 -4 -4 1 1 2 3 -2 1 3 4 1 1 1 2 3 4 1 -6 -4 2 1 1 2 -3 1 1 3 4 3 1 1 2 2 5 -1 3 4 3 1 標準モジュールに Function minusf(cl As Range) ' 関数の引数、セル範囲は =minusf(B2:J2)のように指定 i = 1 For Each c In cl 'MsgBox c If c < 0 Then minusf = c Exit Function Else i = i + 1 End If Next End Function ーー シートのK2セルに関数 =minusf(B2:J2) と入れて第7行までこの式を複写。 結果は略。 === minusf = c をminusf = c.Column とすれば、左列より見て、マイナス数が初出の列番号が返る。

mazdaFD3
質問者

お礼

imogasiさん、ご回答ありがとうございます^^ VBAはほとんど使ったことないので、ちょっと私のレベルでは難しいかもです。 でも、調べてなんとか理解できるように頑張りたいと思います。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

1.セルM1 に次式を入力して、右隣にオートフィル  ̄ ̄ =MIN(IF($A1:$L1<0,COLUMN($A1:$L1),"")) 【お断り】上式は必ず配列数式として入力のこと 2.セル M1 の式中の「MIN」を「MAX」に書き替え  ̄ ̄ =MAX(IF($A1:$L1<0,COLUMN($A1:$L1),"")) 【お断り】上式は必ず配列数式として入力のこと 3.式 =ADDRESS(ROW(A1),M1,4) を入力したセル P1 を右隣にオートフィル 4.範囲 M1:Q1 を下方にオートフィル

mazdaFD3
質問者

お礼

msMikeさん、ご回答ありがとうございました^^ 配列数式は使ったことなかったので、自力ではとても到達できない数式でした。そして求めていた結果が得られました、助かりました^^

関連するQ&A

  • 特定の値がある行の数値をマイナスするマクロ

    エクセルA1:k5000にデータがあります。 もし、E列にE03の表示があった場合、同じ行のI列とJ列の数字をマイナスに表示したいです。 E03の表示があるのはデータ数5000のうち10程度です。 データ処理の関係上、マクロが必要です。 どうぞよろしくお願いいたします。

  • 範囲内で対となった数字を検索して場所を特定し計算

    恐れ入ります、グーグルスプレッドシートで指示した範囲で対となった数字を検索して場所を特定し計算することは可能でしょうか。 自分で解決しようと調べてみたのですが、複雑すぎて今の自分では解決できないと思いましてご相談させて頂きました。 具体的には、同じシート内で A群のM2:U3(9列2行)の間に「3」という数字がどこかにいくつかあります(A群の中には3以外の数字もあります)。 B群のD2:L3(9列2行)の間にはいろいろな数字があります。 A群とB群の位置は対の関係にあります。 (M2とD2は、U3とL3の対象関係です。) A群で「3」があるセル(複数)を検索して位置と個数を調べて、 B群で対となる場所の数字を足して、個数で割るという計算がしたいです。 参照イメージの場合、 「3」を検索してP2,S2,O3,R3に4つあることが分かります。 対の関係にある、G2,J2,F3,I3にある数字を足して4(3が4つあったので)で割りたいです。 (G2,J2,F3,I3)/4 参照イメージの例の場合、最後に2.75という数字が出ると思います。 こういった範囲内で対となった数字を検索して場所を特定し、計算するような複雑な計算はグーグルのスプレッドシートではできるものでしょうか。

  • 任意の行から連続する複数行のデータ平均の算出方法

    エクセル上に3600行のデータがあり、その中から任意の40個の行(行番号234、行番号336、行番号487、・・・)から、それぞれ連続する50行分の左から4行目のセル(D234:D283、D336:D485、D487:D536、・・・)の数値データの平均(D234:D283の平均、D336:D485の平均、D487:D536の平均、・・・)を算出する作業を行っています。 今は、「任意の行からその連続する50行分の左から4行目のセルを範囲指定して平均値を算出」する方法で行っています。 この方法だと、「任意の行からその連続する50行分の左から4行目のセルを範囲指定して平均値を算出」という作業を40回繰り返すことになります。また、同様に処理するワークシートが残り3部あります。 このような作業はマクロを利用すると可能でしょうか?もし可能なら、その方法を教えて下さい。 どうぞよろしくお願いします。

  • 値が奇数の時、任意のセル範囲の行の色付けマクロを

    条件つき書式のマクロを教えてください。 任意の選択したセルの右端列に数字を入力しています。 その数字が奇数だったら、数字の入力してある任意の列は除いて、行の色付けをしたいのです。 選択するセル範囲と数字の入っているセルの列はシート毎、ブック毎に、変わりますので、マクロで設定をしたいと思っています。エクセル2010を使っています。 よろしくお願いします。

  • エクセル VLOOKUPでの複数のデータ抽出

    「表の左端列」で検索する行によって、隣のセルに取り出せるデータの範囲を指定する、 ということは可能でしょうか。 例えば、左端でAを選んだ場合は表のこの範囲から次を選ぶ、 Bを選んだ場合は同じ表の違う範囲から選ぶ、といったようなことです。 普通のVLOOKUPでは1対1、左端で行を選ぶとその行の何列目のデータを取り出すか、 といったことしか出来ないので、それを複数の列の中からさらに選ぶことが出来るように 設定変更したいです。 ご教示よろしくお願いいたします。

  • マイナス数値のスタートする位置を取得したい

    エクセルの関数について質問させていただきます。 以下のような、マイナスからプラスまでの数字が並んでる表があるとします。 2   5   -1   -3  -2  -5  -4  3   5   6 必ずマイナスの数値があるとして、その数値の位置とマイナスの数値がプラスに転じる位置を取得したいのです。この表の場合だと 3がマイナススタート、8がプラススタート(7がマイナス終わり)として取得したい結果です。 このような状況で便利な関数ありましたら、ご教示いただきたいです。よろしくお願いします。

  • Word2003:1行の背景の色を変更する

    Wordで、指定した1行の背景色を変更する、という操作が知りたいです。 よくツールバーにある「蛍光ペン」の場合、選択した部分の背景色が変更されますが、 そうではなく、行の左端から右端までの背景色を変える方法です。 その状態になっているWordファイルを持っているのですが、設定方法がわかりません。 コピペして使っていたのですが、色を変更したいと思いまして。 分かる方居ましたらよろしくお願いします。

  • Excel 「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率

    数学やExcelが苦手で困っています。 どなたかお力を貸して下さい。 Excel2002以降の環境下での場合です。 1行に100個程度の数値が入っている状況です。 その行の中で、「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率を導き出したいのですが、可能でしょうか? 確率自体は、統計関数の何れかを使えば出来そうですが、肝心なところはさっぱり分かりません。 IFを使ってマイナスならば1行下に「1」とか何らかの値を入れて、COUNTIFで手前のセルに値があるか見るという方法も一旦は思いついたのですが、手前のセルとか直後のセルとかを数式でどう表現して良いかも分からず・・・・挫折してしまいそうです。宜しくお願いします。

  • エクセルで最後に入力したセルの値を調べるには

    たとえば、A1~X1までのセル範囲があるとして、そこに、ランダムに数字が入っているとして、B1=95、G1=110、J1=132、P1=124、Y1=156、と、いうような場合で、最後のセルの値、156、を取り出せるような計算式は、有りませんか、過去を、探したのですが、空白でないセルの左端は、有ったのですが、右端を調べるというのは、みつからなくて・・・。お手数ですが、教えていただけるとありがたいです。

  • エクセルでこんな事出来ます?

    エクセル2000で教えて下さい。 ABCDの列に任意の数字が入ります。 例えば     A   B   C   D 1  -10 -20 -30  60 2   50 -30  0  -20 3   10  30 -25 -15 のように同じ行で4つのセルをプラスマイナスすると等しくなります。 数値の入力は小さい数字(マイナスの大きい数字)から順番に入力されていきます。 最後に一番大きい数字が入るように式を入れたいのです。 例で言うと1行目ではD1、2行目ではA2、3行目ではB3の答えが自動で入るようにしたいのです。 列は4列のみです。マイナスの数値は最低でも1つ入ります。   

専門家に質問してみよう