- ベストアンサー
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)
- みんなの回答 (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さんの対応方法がわかりやすいと思います
その他の回答 (1)
- mu2011
- ベストアンサー率38% (1910/4994)
ROW()を使用しない方法ですが、如何でしょうか。 =IF(COUNTIF($B$2:B2,B2)=1,B2,"")
お礼
ご解答ありがとうございます。 そういう使い方の方がよっぽど簡単ですね。 思いつきませんでした。 本当にどうもありがとうございました。 今後とも宜しくお願いいたします。
お礼
丁寧な分かりやすいご説明ありがとうございます。 INDIRECT関数で変換する必要があったのですね。 分かりました。 本当にどうもありがとうございます。 非常に勉強になりました。