• ベストアンサー

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

今、フィルタオプションを使わずに、 重複したデータが空白になるように関数を作っています。 B行に業務内容を書き込み(ミーティング、書類作成 など) C行に重複した業務内容を空白で表示させるという関数を 完成させたいのですが、ROW()関数を使い下にフィルしたとき、 『B$2:B3』の3という数字部分が1つずつ変わるようにしたいのですが、 下記式のような使い方ではエラーになります。 どのようにすればよいのでしょうか?    A         B           C         D 1 氏名    業務内容      業務内容 2 田中    ミーティング    ミーティング 3 田中    書類作成      書類作成 4 田中    ミーティング    (空白) 5  C4=IF(MATCH(B4,"B$2:B"&ROW()-1,0),"",B4)

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

  • ベストアンサー
  • 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関数で変換する必要があったのですね。 分かりました。 本当にどうもありがとうございます。 非常に勉強になりました。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

ROW()を使用しない方法ですが、如何でしょうか。 =IF(COUNTIF($B$2:B2,B2)=1,B2,"")

guchi_yama
質問者

お礼

ご解答ありがとうございます。 そういう使い方の方がよっぽど簡単ですね。 思いつきませんでした。 本当にどうもありがとうございました。 今後とも宜しくお願いいたします。

関連するQ&A