こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数について誰か教えてください。

エクセルの関数について誰か教えてください。

シート1のI3からP550までのセルに、記号や文字などのなにかデータの入力があれば、そのデータ入力があった横のセル1行全部のデータをシート2のA4のセルに表示させる方法を教えてください。

例えば横のセル3のI3からP3のセルどれかに何かデータ入力があれば、横のセル3のA3からP3までのデータをシート2に順に表示。横のセル4のI4からP4のセルどれかに何かデータ入力があれば、横のセル4のA4からP4までのデータをシート2のセル3のデータの下に順に表示させていきたいのです。

シート1のI3からP550までのセルにデータ入力がないものは対象外として、シート2にも表示はしない形にしたいのです。

よろしくお願いします。

投稿日時 - 2010-01-10 16:16:52

QNo.5582426

すぐに回答ほしいです

質問者が選んだベストアンサー

こんばんは!
参考になるかどうか判りませんが・・・
かなり無理矢理って感じの方法になります。

↓の画像のように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

投稿日時 - 2010-01-11 21:09:58

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

作業列をシート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))))

投稿日時 - 2010-01-10 17:00:20

お礼

何とか解決いたしました。ありがとうございました。

投稿日時 - 2010-02-24 02:03:34

Sheet2!A3: =IF(COUNTA(Sheet1!$I3:$P3),IF(Sheet1!A3="","",Sheet1!A3),"")

投稿日時 - 2010-01-10 16:43:47

あなたにオススメの質問