• 締切済み

エクセル 関数 別シートへの抽出

エクセル関数について質問します。 「数値の入ったセルだけを、その行ごと丸々別シートに抽出する方法」 について教えてください。 例、C列に空白セルと1、2や3など、数値の入ったセルがあります。空白セル以外の数値の入ったセルを、その行ごと別シートに抽出したい。 C3とC5に数値が入ってる→3行目と5行目を別シートに抽出する。 このようなことは関数でできるのでしょうか? マクロでないと無理でしょうか? お力をお貸しください。 よろしくお願いします。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.6

No5の続報 No5は作業列がSheet2のA,B列(2つ)ですが、 作業列をSheet2のA列(1つ)だけとする案も考えてみました。 A1=IF(ISNUMBER(Sheet1!A1),1,0.01) A2=IF(ISNUMBER(Sheet1!A2),INT(A1)+1,A1+0.01) 以下、必要数下方向に複写 B1=IFNA(INDEX(Sheet1!A:A,MATCH(ROW(),A:A,0),0,1),"") 以下、必要数下方向に複写

5stereophonics5
質問者

お礼

ご回答ありがとうございました! ひとつ勉強になりました。 また機会がございましたらよろしくお願いします!

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.5

出来合いの関数だけでという条件なら、 (作業列を2つ使いますが) 添付画像のような状態で 次のように関数を埋めることで実現できます。 以下、Sheet2に埋める関数式です。 A1=IF(ISNUMBER(Sheet1!A1),Sheet1!A1,"") 以下、必要数下方向に複写 B1=IF(A1<>"",1,0.01) B2=IF(A2<>"",INT(B1)+1,B1+0.01) 以下、必要数下方向に複写 C1=IFNA(INDEX(A:A,MATCH(ROW(),B:B,0),0,1),"") 以下、必要数下方向に複写

  • kkkkkm
  • ベストアンサー率65% (1608/2445)
回答No.4

マクロの例です。 Sheet1のC列の空白セル以外のデータを列ごとSheet2に転記します。 空白以外は数値しか入っていない(文字はない)と考えています。 Sub Example() Dim c As Range Dim Sh1 As Worksheet, Sh2 As Worksheet Set Sh1 = Sheets("Sheet1") Set Sh2 = Sheets("Sheet2") For Each c In Sh1.Range(Sh1.Cells(1, "C"), Sh1.Cells(Rows.Count, "C").End(xlUp)) If c.Value <> "" Then Sh2.Rows(Sh2.Cells(Rows.Count, "C").End(xlUp).Row).Offset(1, 0).Value = Sh1.Rows(c.Row).Value End If Next Set Sh1 = Nothing Set Sh2 = Nothing End Sub

5stereophonics5
質問者

お礼

ご回答ありがとうございました! これを機にマクロの勉強を始めてみたいと思います。 また機会がございましたらよろしくお願いします!

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>このようなことは関数でできるのでしょうか? 関数は抽出先のセルへ数式を設定して数式の計算結果を表示する(代入する)という仕組みになっていますので抽出元の行番号を算出しただけでは抽出先の全ての列へ書き出せません。 >マクロでないと無理でしょうか? マクロ(VBAプログラム)の場合は抽出元の行番号を検出して、その行の全ての列を抽出先の行へ値を書き出せます。 あなたのやりたいことはVBAで行単位で他のシートへ書き出す方が効率的かと思います。

5stereophonics5
質問者

お礼

ご回答ありがとうございました!

  • Mathmi
  • ベストアンサー率46% (54/115)
回答No.2

 C1:1  C2:空白  C3:3  C4:空白  C5:2 例えば以上のようなデータを、別の場所(例えばD列)に  D1:1  D2:3  D3:2 のような形で貼り付けたい、と解釈しました。 マクロを使わず手動に行う場合、以下の方法があります。 1.C列にフィルタを設定する。 2.フィルタで空白セルを非表示にする。この際、1行目はタイトル行としてフィルタの範囲外になる事に注意。 3.C列を選択する。 4.Alt+;(右下辺り、[+]とか[れ]のボタン)で、選択部分から非表示部分のみを抽出する。 5.選択範囲をコピーして、任意の場所(例えばD1セル)に張り付け。 6.フィルタが不要ならば解除する。 これ以上(複数列を一気に処理するなど)になると、マクロを使う必要が出てくると思われます。

5stereophonics5
質問者

お礼

ご回答ありがとうございました! また機会がございましたらよろしくお願いします!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

例示データとして、Sheet1のB1:B 10に -  <ー 以下では -は実際は空白セルのこととします a 12 - 34 - c - 65 - Sheet2(別シート)のC1セルに =IF(OR(ISNUMBER(Sheet1!B1)),Sheet1!B1,"") と入れてC10まで式を複写。 結果 12 34 65 となります。 ーー セルの値について 数字か ISNUMBER関数 文字列か ISTEXT関数 ブランクか ISBLANK関数 などがあるので、OR関数で組み合わせたらどうか。 ただし空白セルが0に置き換わらないように式の工夫が必要かもしれない。

5stereophonics5
質問者

お礼

ご回答ありがとうございました! また機会がございましたらよろしくお願いします!

関連するQ&A

  • Excelにおけるデーター抽出

    Excelのシートに記載されている内容は次の通りです。 (1) セルA5~A60の間に1~56の昇順の番号 (2) セルB5~B60には氏名 (3) セルC5~C60には○、×、△の記号 このシートからC列が ○ の記号が付与されている者だけの氏名を別のシートのB7~B**の間に抽出するのですが、抽出したシートの行に空白ができないようにするには式をExcel関数で作成することは可能でしょうか? 若し、不可能でしたらマクロで行う場合のプログラムを教えて下さい。

  • エクセル関数について

    エクセルの関数を教えてください。 例:25..15. 9.- 1.- 3. このように徐々に減って行く数値の並び(行・列)を別の行・列で 最初にマイナス(ー)になったセルのみ何かしらの数値を反映させるほ方法ってありますか? 何かしらの数値を1として、上記の例で説明すると 答:空白.空白.空白.1.空白 になります。(最初のマイナス、ー3を空白にするのがポイントです)

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセルでデータを別シートに抽出して印刷したい

    エクセルでデータを別シートに抽出して印刷したい 急ぎの仕事でやり方がわからず困っています。 sheet1からsheet2にデータを抽出し、 I列の名前が変わるごとに1シート作成し印刷したいと考えています。 関数で考えてみたのですがうまくできなく挫折してしまい、 お力をいただけないかと思い書き込みました。 よろしくお願いいたします。

  • エクセルでの関数を使った条件抽出方法について

    エクセル初心者です。 エクセルでの関数を使った条件抽出方法についてどなたかご教授願います。 よろしくお願いします。 Sheet1の特定のセルに対して、Sheet2中にある条件に一致するセルの値を 表示させる方法がわかりません。 <具体的内容> 次のような2つのシートがあります。 Sheet1       -------------------------     A     B     C  1                2  2  費目1 3  費目2 4  費目3 ------------------------- Sheet2 -------------------------     A     B     C     D 1  2          1     2     3 3  費目2   100   200   300 4  費目1    30    10    20 5  費目3   150   350   250 ------------------------- Sheet1のC1のセルと同じ数値をSheet2の2:2行から探して、 一致する数値に該当する列の3~4行目の値を、 Sheet1のA2:A3の費目とSheet2のA3:A5の費目とが 一致するようにして、Sheet1のB2:B3に表示したいです。 このときSheet1のB2~B3にはどのような関数式を入れたらよいですか? 上の場合だと、Sheet1のB2=10、B3=200、B4=350となってほしいです。 HLOOKUP、COLUMNなど組み合わせてみたのですが、 全くうまくいきません。簡単ではないのでしょうか? どなたか教えてください、よろしくお願いします。

  • Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えて

    Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えてください。 Excel2007で名簿を作成しています。 それぞれに、ある条件で「A」「B」「C」と3つに分類しています。 それぞれの分類ごとに、別シートに一括して抽出する方法をご教示ください。 例 Sheet1には (所属名)(コード)(氏名)(コード)(資格)(コード)(年数)(ランク)など14項目あります ※コードの一部には入力規則を使用したブルダウンで選択したり、lookup関数で、数字を入力すると所属名が表示されるようになっています 抽出条件となるランクは、年数のセルが●●以上であれば「A」、●●以下であれば「B」という関数を使用しています。 名簿に入力するごとに、「A」「B」「C」と別のシートに抽出させたいのです。 こちらのサイトでいろいろ検索し参考に試してみましたが、抽出できませんでした。 関数でもマクロでもいいので、抽出する方法を教えてくださると大変嬉しいです。 宜しくお願い致します。

専門家に質問してみよう