- ベストアンサー
エクセルの質問に関する解決方法
- エクセルで、条件に応じて別のセルに文字を入力する方法について教えてください。
- シート1の特定のセルの値に基づいて、別のシートの特定のセルに文字を入力する方法について教えてください。
- シート2の特定のセルを自動的に上に詰める方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
初心者さん向けの簡単な方法: シート1のG5に =IF(AND(B5<>"",9<=F5,F5<12),COUNT($G$4:G4)+1,"") と記入、下向けにコピー シート2のA1に =IF(ROW(A1)>MAX(Sheet1!G:G),"",ROW(A1)) と記入、下向けにコピー シート2のB1に =IF(A1="","",INDEX(Sheet1!$B$5:$B$999,MATCH(A1,Sheet1!$G$5:$G$999,0))) と記入、下向けにコピー。 #参考 お勧めしませんが、次のようにしても出来ます。 シート2のB1に =INDEX(Sheet1!B:B,SMALL(IF((Sheet1!$B$5:$B$999<>"")*(999<=Sheet1!$F$5:$F$999)*(Sheet1!$F$5:$F$999<12),ROW(Sheet1!$B$5:$B$999),9999),ROW(B1)))&"" と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力、以下コピー #ご相談の出し直しは全然OKですので、その際は前のご相談は必ず解決で閉じる操作を忘れずに行っておいてください。
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 データは2行目以降にあるとします。 やり方は一緒ですので、実データに合わせてセル番地だけ変更してみてください。 間違いなない方法としては↓の画像のように作業用の列を設けます。 シート1の作業列G2セルに =IF(AND(F2>=9,F2<=12),ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 シート2のB2セルに =IF(COUNT(シート1!G:G)<ROW(A1),"",INDEX(シート1!B:B,SMALL(シート1!G:G,ROW(A1)))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 他の方法としては作業列を使わずに配列数式にする方法! (データ量が極端に多い場合はあまりオススメしません) シート1の作業列は関係なく、シート2のB2セルに =IF(SUMPRODUCT((シート1!$F$1:$F$100>=9)*(シート1!$F$1:$F$100<=12))<ROW(A1),"",INDEX(シート1!$B$1:$B$100,SMALL(IF(シート1!$F$1:$F$100>=9,IF(シート1!$F$1:$F$100<=12,ROW($A$1:$A$100))),ROW(A1)))) 上記数式をShift+Ctrl+Enterで確定します。 この画面からコピー&ペーストする場合はB2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーすると、同様の結果になると思います。 参考になりますかね?m(_ _)m
お礼
回答ありがとうございます。 できました!しかもカウント付き!すごいです。 少し自分で改良をしようとしたのですが、この使っている関数の意味がわからずで もう少し質問・相談してもよろしいでしょうか? シート1の9~11までの数字だったらシート2に 12~15までだったらシート3に 16以上だったらシート4に 各シートに上につめる形で文字が反映されたら最高です。