• 締切済み

excel データの抽出について

仕事でexcelの表からデータを抽出して資料を作成したいと思っています。 ≪シート1≫表から≪シート2≫表へ「1が立っているデータのタイトル(あ~お)を抜き出したいのです。どなたか方法があれば教えてください。(できればVBA等を使わないで作りたいです。) ≪シート1≫     あ い う え お A  1    1 B     1 1   1 C         1 1 ≪シート2≫ A あ う B い う お C え お

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

回答のサンプル通りにまずはご自分でもまっさらエクセルに作成し,ご質問であなたから情報提供されていた内容がキチンと実現できていることをまず最初に確認してください。 その上で,回答した数式をあなたが具体的にどのように修正したら間違ったのか,その「間違えた数式」や「実際にはどこ番地のセルに表を作ったのか」などの詳しいお話を,キチンと情報提供してください。 単純に数式の修正をミスったのかもかもしれませんし,それともあなたがご相談に書かなかった,例えばA列からAQ列までの範囲「など」に記入されている内容が悪さをしているのかも?しれません。 そういった原因をつかまないと,断片情報に合わせて修正した数式を追加で何回回答しても,また同じところで間違えます。 あなたが作成中のワークシートのホントに隅々まで漏れなく説明をしてくださいというのは到底無理なお話なので,原因をつかむのはこっちでやりますから,少なくとも「具体的にどんな数式をどこ番地のセルに入れました」と「その結果どこ番地の式はこういう結果になりました(シート2はこれこれの式をどこどこセルの範囲に記入したら45から72までの数字が出ました,シート3は一体どんな結果になりました)」という『事実』を情報提供してくださいということです。 添付図: シート1: 【具体的なレイアウト】 AS列から1を記入している 1行目にあいうえお…が記入してある シート2: 【具体的なレイアウト】 AS2に =IF(Sheet1!AS2="","",COLUMN()) という式を入れて,BX列までコピーしてある シート3: 【具体的なレイアウト】 AS2に =IF(COLUMN(A2)>COUNT(Sheet2!2:2),"",INDEX(Sheet1!$1:$1,SMALL(Sheet2!2:2,COLUMN(A2)))) と記入して,BX列までコピーしてある 実際には,これは最初に回答した式のそのままです。

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

シート1ではA2せるからかほうにA,B,Cが、B1セルにはあ、C1せるにはい、・・・F1セルにはお、がそれぞれ入力されているとします。 G列は作業列でG2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2=1,"1"&B$1,"")&IF(C2=1,COUNT(B2:C2)&C$1,"")&IF(D2=1,COUNT(B2:D2)&D$1,"")&IF(E2=1,COUNT(B2:E2)&E$1,"")&IF(F2=1,COUNT(B2:F2)&F$1,"") シート2ではA1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(INDEX(Sheet1!$A:$A,ROW(A1)+1)="","",INDEX(Sheet1!$A:$A,ROW(A1)+1)) B1セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ISERROR(FIND(COLUMN(A1),Sheet1!$G2)),"",IF(ISERROR(FIND(COLUMN(A1)+1,Sheet1!$G2)),MID(Sheet1!$G2,FIND(COLUMN(A1),Sheet1!$G2)+1,20),MID(Sheet1!$G2,FIND(COLUMN(A1),Sheet1!$G2)+1,FIND(COLUMN(A1)+1,Sheet1!$G2)-FIND(COLUMN(A1),Sheet1!$G2)-1)))

noname#204879
noname#204879
回答No.2

添付図参照(Excel 2002) Sheet2 において、 1.セル B1 に式 =IF(Sheet1!B2,Sheet1!B$1) を入力して、   此れを右および下にドラッグ&ペースト 2.範囲 B1:F3 を選択して、[編集]→[ジャンプ]→[セル選   択]を実行 3.“数式”に目玉を入れた後、“論理値”だけにチェックを   入れて[OK]をクリック(→結果を Fig-2 に示す) 4.[編集]→[削除]を実行 5.“左方向にシフト”に目玉を入れて、[OK]をクリック(→結   果を Fig-3 に示す)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

簡単な方法(推奨) 添付図左上:Sheet1は元のデータ 添付図左中:Sheet2は中間処理 B2に =IF(Sheet1!B2="","",COLUMN()) 右にコピー,下にコピー 添付図左下:Sheet3は結果 B2に =IF(COLUMN(A2)>COUNT(Sheet2!2:2),"",INDEX(Sheet1!$1:$1,SMALL(Sheet2!2:2,COLUMN(A2)))) 右にコピー,下にコピー お薦めではない方法 添付図右 B7セルに =INDEX($1:$1,SMALL(IF($B2:$F2=1,COLUMN($B2:$F2),200),COLUMN(A7)))&"" と記入し,コントロールキーとシフトキーを押しながらEnter 右にコピー,下にコピー。

ijipon
質問者

補足

ありがとうございます!参考にさせていただきました。 途中まではできたのですが、(推奨)最初の式を中間処理に使うと、計算結果が45~76になります。 そうなった場合の一番最後の計算式について、数字をあてはめたいのですが、どこにどの数字(セル値)をあてはめるべきか教えていただけますでしょうか。また、この計算式は、元データを編集した場合にも使用可能でしょうか?(元データを編集したときに、自動的に再計算され、中間処理、結果も変わってくるかどうか。)もう少しで、完成しそうなので、どうぞお返事お願いします!

関連するQ&A

専門家に質問してみよう