参考までに・・・
よく有る数式ですが、Wendyさんの配列処理を作業列を使用して 処理する方法です、データ量が多い場合には有効かと思います
■■シート1■■ A列 B列 C列 1行目 品名 在庫 出荷予定 2行目 イチゴ 3行目 スイカ 4行目 レモン ● × 5行目 パイン ● 6行目 キウイ 7行目 リンゴ ● ・・・ n行目
■■シート2■■ A列 B列 C列 1行目 2 在庫(手入力or=シート1!B1) 2行目 5 パイン 3行目 7 リンゴ 4行目 5行目 5 6行目 7行目 7 ・・・ n行目 ・A列:シート1のB列が●でC列が×でない時行番号をセット ・B列:B1 :A列にセットしたセル番号の総数 B2以降:A列にセットしたセル番号を昇順に取り出し
【設定】全てシート2で設定 1)A2セルに以下の数式を入力して A3〜An(シート1の予想される最大入力行迄)へコピー =IF(AND(シート1!B2="●",シート1!C2<>"×"),ROW(),"") 2)B1セルに以下の数式を入力 =COUNT(A:A) 3)B2セルに以下の数式を入力してB3〜Bnへコピー =IF(ROW(A1)>$B$1,"",SMALL(A:A,ROW(A1))) 4)C2セルに以下の数式を入力してC3〜Cnへコピー =IF(B2="","",INDEX(シート1!A:A,$B2))
【補足】 シート1の2行目以降のデータ行の変更を行の挿入・削除で 行う場合は、上記の設定では参照が自動的に変化してしまうため 正しい結果が得られない場合があります。
少々処理は重くなりますが1)の数式を以下の様に変更する事で 対応可能です
[変更前]=IF(AND(シート1!B2="●",シート1!C2<>"×"),ROW(),"") [変更後]=IF(AND(INDEX(シート1!B:B,ROW())="●",INDEX(シート1!C:C,ROW())<>"×"),ROW(),"")
|