• ベストアンサー

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

エクセルの関数について教えて下さい。 ”シート1”に、”シート2””シート3””シート4”から、ある文字列”あああ”が同じものをその行をまるまるシート1に表示したいのですが。。。 そのような方法はありますか?一列一列SUMIFで関数を入力しなければいけませんか? 説明がわかりにくくて申し訳ありません。 宜しくお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート2、シート3、シート4でそれぞれ文字列あああに相当する列がB列にあるとしたら次のようにすればよいでしょう。 いくつかの作業列や行を作って対応します。 シート2…などの表はF列までの表としてそれぞれのシートのG2セルには次の式を入力して下方にドラッグコピーします。 =IF(B2="","",IF(B2=Sheet1!$A$1,COUNTIF(B$2:B2,Sheet1!$A$1),"")) ここでは検索文字のあああはシート1のA!セルに入力されているとしています。 次にシート1ではA1セルに検索文字のあああを入力します。 B1セルからSheet2、C1セルにはSheet3、D1セルにはSheet4とそれぞれのシート名を入力します。 B2セルには次の式を入力して右横方向にドラッグコピーします。 =IF(B1="","",MAX(INDIRECT(B1&"!G:G"))) これで各シートのB列にある”あああ”の入力されている行数が表示されます。 次にA3セルには0を入力します。 B3セルには次の式を入力して右横方向にドラッグコピーします。 =IF(B2="","",SUM(A3,B2)) そこで該当する行を表示させることにしてA5セルから右横にはシート2の項目名の行をコピーして貼り付けます。 A6セルには次の式を入力して右横方向にF6セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX($3:$3),"",INDEX(INDIRECT(INDEX($B$1:$F$1,MATCH(ROW(A1)-0.1,$3:$3,1))&"!A:F"),MATCH(ROW(A1)-INDEX($3:$3,MATCH(ROW(A1)-0.1,$3:$3,1)),INDIRECT(INDEX($B$1:$F$1,MATCH(ROW(A1)-0.1,$3:$3,1))&"!G:G"),0),COLUMN(A1)))

kobimama
質問者

お礼

大変有難うございました。 助かりました!!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • utun01
  • ベストアンサー率40% (110/270)
回答No.1

具体的な状況は分かりませんが、 for each cel in シート1.UsedRange if cel.value = "あああ" then <あるシートに行ごとコピー> end if next みたいな感じでVBA書けばいけませんか? (最近VBA書いてないので文法は適当です) ちなみに、"あああ"がある列が特定されているなら、UsedRange部分をその行だけ走査するように変更した方がいいです。

kobimama
質問者

お礼

ありがとうございました。 参考にさせて頂きました!!! 大変助かりました!!

すると、全ての回答が全文表示されます。

関連するQ&A