• ベストアンサー

ROW()関数の使い方について

bdrの回答

  • ベストアンサー
  • bdr
  • ベストアンサー率43% (35/80)
回答No.2

「"B$2:B"&ROW()-1」は文字列から1を引くということになるのでエラーになりそうですなので、「"B$2:B"&(ROW()-1)」のように括弧を使い、先に行から1を引くようにする必要があります。 また、上述の修正で、「"B$2:B"&(ROW()-1)」は"文字列"として扱われますが、MATCH関数の第2引数は"セルの範囲"だと思うのでエラーになりますので、INDIRECT関数を使って、"文字列"を"セルの範囲"に変換する必要があります。つまり「INDIRECT("B$2:B"&(ROW()-1))」となります 全体としては、 C4=IF(MATCH(B4,INDIRECT("B$2:B"&(ROW()-1)),0),"",B4) に修正すれば、大丈夫じゃないですかね しかしながら#1さんの対応方法がわかりやすいと思います

guchi_yama
質問者

お礼

丁寧な分かりやすいご説明ありがとうございます。 INDIRECT関数で変換する必要があったのですね。 分かりました。 本当にどうもありがとうございます。 非常に勉強になりました。

関連するQ&A

  • match関数とindex関数について

    B列に空白を含む連続した数値の配列において、空欄と空欄の間の数値の個数を数える式として、以下の式を見たことがあります。 =IF(AND(B9<>"",B10=""),IF(ROW(B9)=COUNT($B$1:B9),ROW(B9),ROW(B9)-MATCH(1,INDEX(0/($B$1:B9=""),0))),"") 確かにこの式で求める答えが出るのですが、式の最後の「MATCH(1,INDEX(0/($B$1:B9=""),0)」の意味がよく分かりません。 ・MATCH関数の範囲としているINDEXの内容はどういう意味なのか ・MATCH関数の検査値としている「1」はどういう意味なのか ご教授願います。

  • ROW関数について

    先日質問をしたのですが、理解が足りないようなので質問させて頂きます。 ROW関数はセルを入力したそのセルの行番号を返すものだと思うのですが、例えば =INDEX(シート1!C2:シート1!HR2,(ROW()-3)*3+1,) このような数式をワークシート2のD3のセルに入れると、ROW()は3と解釈されるので、 ・範囲はData!のワークシートのC2からHR2まで、 ・(3-3)*1+1となるので、その範囲内の1番であるData!D2セルを参照するのだと思うのですが、何か間違っているでしょうか? この際に、ROW()に参照されるセルは、もしかしてシート1のものなのでしょうか? 宜しくお願いしますm(_ _)m

  • INDEX関数SMALL関数を使って空白行を詰める

    シート1にINDEX関数SMALL関数を使って空白行を詰める表を作成したのですが詰めた表をシート2に表示することはできないのでしょうか。  =IF(COUNTIF($A4:$A4,0)=0,MAX(D$3:$D3)+1,"")  =IFERROR(INDEX(A:A,MATCH(ROW()-3,$D:$D, )),"")この表をシート2に表示する方法

  • EXCELで#N/Aが表示される

    L1~L10に文字 M1~M10に文字 N1~N10に日付け が、入ってます。 K1~K10は空白ですがここに1~10の数字をランダムに入れます。 そのとき、Kに1の入った行(L,M,N,)の内容をA5,B5,C5に、 Kに2の入った入った行(L,M,N,)の内容をA6.B6,C6にと Kに10が入ったところまでを順次行いたいのですが できるでしょうか? の問い合わせに対して K列に数値の重複が無いとして。 A5に =INDEX(L$1:L$10,MATCH(ROW(A1),$K$1:$K$10,0)) 必要なだけ右方向、下方向にフィルコピー の回答をいただきました。 試してみて、やりたいことが十分できるのですが、Kセルに何も入っていないと Aセルに「#N/A」が表示されます。 Kセルに何も入ってないときは空白にしたいのですが、どうすればいいのでしょうか? よろしくお願いいたします。

  • 【excel】row関数を結合セルに使う方法

    お世話になります。 row関数を用いてB列のような数字の重ならない階級を作成したいと考えております。これをさらに2つずつの結合セルに適応させたいのですが、A列のように結合セルの一番上の列の数字をrow関数が参照してしまうので値が飛んでしまいます。 B1=(ROW())*10&"-"&(ROW())*10+9 という関数で作成したのですが、どうにか一括してB列みたいなものは作れないでしょうか。もし可能でしたら2つ以上のセルにも応用できる方法をご教示いただけますでしょうか。 パソコン、excelにお詳しい方よろしくお願いいたします。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • 関数MATCHを利用して、該当がある場合のみ数字を出したい

    お世話になります。 シートの中に重複データそれがどのデータと一致しているかセル番号を出す関数をつくりたいと調べています。 http://oshiete1.goo.ne.jp/qa2495843.html こちらで紹介のあったようにMATCHを使って、 たとえばA列に名前が入っていた場合、となりのB列に =MATCH(B2,B:B,0) といれてみました。 すると一致している場合は、その一致しているセルの行番号が出るのですが、一致するものがない場合は、そのB列の行番号が出ます。 これを、一致するものがある場合のみ、数字を表示する、としたいのですが、どのようにすればよいでしょうか。 イメージとしては もし B2と(MATCH(B2,B:B,0)の結果)が一緒なら空白にする もし B2と(MATCH(B2,B:B,0)の結果)が違ったら(MATCH(B2,B:B,0)の結果)を表示する といった感じです。 空白は、0と入力されてもいいです。 アドバイス、ご指導お願いいたします。

  • フィルハンドルができない

    フィルハンドルができない 例えばLEFT関数とか数式をを入れた時、その式を1000行目まで フィルハンドルで一気に入力したいとします。 通常はできるのですが、その1000行の中に空白が あったりすると、フィルハンドルはその空白のセルで止まってしまうので、 手で1000行目までハンドルを持っていかなければいけません。 何か、簡単に一気に入力できる方法はないでしょうか。 連続データの作成をやってもうまくいかなかったです。 ↓  下の場合だと、A列にLEFT関数の式を入力してフィルハンドルすると、 B列4行目に空白があるので、3列目で連続のデータがとまってしまいます。       A列     B列 1行目 LEFT関数  1234 2行目 LEFT関数  1233   3行目 LEFT関数  1234           4行目           空白            5行目         1233           

  • Mod(row)***

    =SUM(IF(MOD(ROW(A1:A20),4)=MOD(ROW(A3),4),A1:A20)) と、ネットに書いてある通り入力しても0になるか最後に,””を入れた場合、Valueになってしまいます。 理解しようと簡単な数字でやっているのですが計算ができません。 最初はMod、Row関数の意味から調べました。 昔、会社の技師が入力した関数を噛み砕こうとしています。 技師の入力したものは。範囲が200ほどあり、4行ごとの1行目の合計、別に2行目の合計を作成されています。 時々、おかしくなったから直してと言われることがあり、取り急ぎコピペで事なきを得ましたが、 理解したいと思っています。 ただ、実際に入ってる場所で同じ形で同じ関数を入れて作成すると、あるセルはちゃんと計算できるのですが、 あるセルだけは39,248,338分足された値が出てきます。 まったく同じ数式なのでなぜそうなるのかわかりません。 どなたかお詳しい方よろしくお願い致します。

  • Excelの関数式について

    ExcelのB列(B2:B50)にフラグ「0」または「1」が入力されています。 フラグ「0」が入力されている行番号を関数を使用して取得したいと思っており、 下記関数でできるのですが、フラグ「0」が複数連続で続いた場合は、1つ目だけの 行番号を取得したいのですが、どのように変更したらよいのでしょうか。 D列に下記関数式を入力して、以下オートフィルしています。 =IF(COUNTIF(B$2:B$50,0)<ROW(A1),"",SMALL(INDEX((B$2:B$50<>0)*10^3+ROW(B$2:B$50),),ROW(A1))) 例えば、下記のようば場合は、行番号「2、5、8」を取得したいです。    A   B 1      -1 2       0 3      -1 4      -1 5       0 6       0 7      -1 8       0 9      -1 ・ ・