- ベストアンサー
エクセルの関数について教えてください
- エクセルの関数について詳しく教えてください。
- シート1の特定の範囲にデータが入力された場合、そのデータの一部をシート2に表示する方法を教えてください。
- 未入力のセルは対象外とし、シート2には表示しないようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 参考になるかどうか判りませんが・・・ かなり無理矢理って感じの方法になります。 ↓の画像のようにSheet1に作業用の列(表)を使わせてもらっています。 Sheet1のQ3セルに =IF(COUNTA(I3:P3)=0,"",ROW(A1)) R3セルに =IF(OR($Q3="",COUNTA($I3:$P3)<COLUMN(A1)),"",INDEX($I3:$P3,,SMALL(IF($I3:$P3<>"",COLUMN($A:$H)),COLUMN(A1)))) これは配列数式になってしまいますので、 この画面から数式をR3セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 そして、R3セルのフィルハンドルで列方向にY3セルまでオートフィルでコピーします。 Q3~Y3セルを範囲指定し、Y3セルのフィルハンドルで下へオートフィルでコピーします。 これで、空白以外の行に行番号が・元データが左詰めで表示されるはずです。 このデータを元にSheet2に表示させるようにします。 Sheet2のA4セルに =IF(COUNT(Sheet1!$Q$3:$Q$550)<ROW(A1),"",INDEX(Sheet1!$R$3:$Y$550,SMALL(Sheet1!$Q$3:$Q$550,ROW(A1)),COLUMN(A1))) (これは配列数式ではありません) として、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、長々と書いた上に、少し手間がかかる方法ですが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
作業列をシート1に設けて対応するのが判りやすいでしょう。 例えばシート1のR3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(I3:P3,"*")=0,"",MAX(R$2:R2)+1) 次にシート2のA4セルには次の式を入力してP4セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$R:$R,ROW(A1))=0,"",IF(INDEX(Sheet1!$A:$P,MATCH(ROW(A1),Sheet1!$R:$R,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$P,MATCH(ROW(A1),Sheet1!$R:$R,0),COLUMN(A1))))
Sheet2!A3: =IF(COUNTA(Sheet1!$I3:$P3),IF(Sheet1!A3="","",Sheet1!A3),"")
お礼
何とか解決いたしました。ありがとうございました。