- ベストアンサー
エクセルの複数の条件範囲に合う行を別シートへNo2
先ほど質問したものなのですけど、 どうやっても、宿泊日と人数が合っていない数字で直りません。 お分かりの方教えて下さい。 作業セルに=IF(AND(Sheet1!A2>=$B$2,Sheet1!A2<=$D$2,Sheet1!O2>=$B$3,Sheet1!O2<=$D$3),ROW(),"") セルに =IF(COUNT($P:$P)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL($P:$P,ROW(A1))))
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
正直、画像が小さくてよく分からない感じなので、推測でお答えします。 「作業セル」というのは、P 列のセルのことですね、恐らく。画像では右端で切れているようですが。 数式全体は問題なさそうに見えるので、きっと ROW 関数のせいではないかと思います。「row()」のように引数を書かない場合、これが入力されているセルの行番号を返します。「row(a1)」なら、A1 セルの行番号である「1」を返します。 ということは、セルのドラッグ&ドロップやセルなどの挿入/削除によってセルの位置が変化すると、計算が狂うということです。 だから例えば、「row()-3」ならこれが入力されているセルの行番号から 3 を引いた値になるし、「row(a2)-row(a$1)」なら 2 - 1 = 1 が計算されます。ROW を使うなら、そのようにして調整し、セルの配置は基本的に動かさないことが必要です。 ROW が使われている理由は、結果を表示する欄において、セルの間を空けずに上から詰めて表示するためだと思います。行番号を動かして表示させるため、行番号の特定が必要なわけです。 いろいろ考えると ROW は扱いがちょっと難しいので、もしも数式で複数条件での転記というのは諦めるんだとすると、フィルタがお勧めですね。複数条件で絞り込み、該当の行だけを上から詰めて表示できます。
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
素直にフィルタ機能を使って範囲で選択、 フィルタによって抽出された行をコピー、別シートに貼り付け。 これが一番早い。 こういう書き方をすると、 また解らなくて閉じ逃げするんだろうけど、 教えてもらったことを応用できないなら あるいは、応用しようとしないなら、 最初から尋ねない方が良いですよ。 ・作業列は「どこに」作ってます? ・作業列に入れた式の意味は解ってます? ・セルに入力した式の意味は理解しようとしてます? これらが解れば、自ずと答えは見えてくるはずです。 「先ほどの質問」に回答くださった皆さんへの詫びを含め、 まずは、自分で考えてくださいね。
お礼
ありがとうございます。 ROWの狂いが原因なのかもしれないのですね、 再度挑戦してみます。