• ベストアンサー

エクセル 摘出 2

お世話になります。 エクセル摘出の方法を教えてください。 詳細は添付画像にて エクセル愛好会のみなさんよろしくお願いします。

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

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

シート1ではA列からF列までで1行目から下方に入力されているとします。 計算にも負担がかからずに分かり易い方法は作業列を作って対応することです。 G列を作業列としてG1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",A1&"/"&COUNTIF(A$1:A1,A1)) そこでお求めの表をシート2に表示させるわけですが摘出したい数値をシート2のA1セルに入力します。例えば102と入力します。 A2セルには次の式を入力してF2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COUNTIF(Sheet1!$G:$G,$A$1&"/"&ROW(A1))=0,"",INDEX(Sheet1!$A:$F,MATCH($A$1&"/"&ROW(A1),Sheet1!$G:$G,0),COLUMN(A1)))

hkazuyoshih
質問者

お礼

ありがとうございました。 できましたー

その他の回答 (3)

回答No.4

No.3 です。一部、適切でない箇所があったので、訂正させていただきます。I3 セルの数式中、「-row(B$3)」という項を「-row(sheet1!B$3)」に書き換えてください。

回答No.3

腫瘍を摘出する方法の一例。特にお勧めでも何でもありませんが。 抽出の基準とする配列を作る操作は、Sheet1 の左端の列が数値であるならば、行番号を混ぜた四則演算などでできます。ROW は行番号を返す関数。 Sheet2 I1 102 I3 =index(sheet1!$B$3:$G$9,small(index(row(sheet1!$B$3:$B$9)*(1+10^15*((sheet1!$B$3:$B$9+10^-4*row(sheet1!$B$3:$B$9)<$I$1)+($I$1+1<sheet1!$B$3:$B$9+10^-4*row(sheet1!$B$3:$B$9)))),),row(i3)-row($I$3)+1)-row(B$3)+1,column(I3)-column($I3)+1) ※ I3 セルをコピーし I3:N9 のセル範囲に貼り付け ※上式は添付図のように、余った行にエラー値「#REF!」を表示してくれますが、それを表示したくないという場合は、上式から「=」を取り除いた数式を使って、「=iferror(数式,"")」などと記述します。 上式は、左端の列が整数の場合。元データが例えば小数点第 2 位まであるとかそういうときは、数式中に 2 箇所ある「10^-4」という部分の桁数と「$I$1+1」という部分の「1」を、抽出元データの総行数を考えながら適当に調節してください。 エクセル愛好会さんの者ではないのにしゃしゃり出てきて恐縮ですが、お役に立てれば幸いです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 「エクセル愛好会」の者ではありませんが・・・ Sheet2のA1セルに =IF(COUNTIF(Sheet1!$A:$A,102)<ROW(A1),"",INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$A$1:$A$1000=102,ROW($A$1:$A$1000)),ROW(A1)))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は、 上記数式をドラッグで範囲指定 → 右クリック → コピー → Sheet2のA1セルを選択 → 数式バー内で一度クリック → 貼り付け → そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列・行方向にオートフィルでコピーしてみてください。 ※ 今回の場合Sheet1のA列は「数値」ですので上記のような数式に成増が、 仮にA列が文字列の場合は上記数式の 102 の部分を ダブルクォーテーションで囲みます "102" といった具合に。 ※ 上記数式は1000行目まで対応できる数式にしていますが、配列数式はPCにかなりの負担をかけますので、 データ量が極端に多い場合は配列数式を使用せず、No.1さんが回答されていらっしゃるように 作業用の列を設けた方が良いと思います。m(_ _)m

関連するQ&A