• 締切済み

こんな時に使えるexcelの関数ってありますか?

excelの関数で、右のセルを検索値とすることが出来るものはあるんでしょうか? もしくは、1行まるごと別シートへ自動的に入るように出来る関数ってないですかね? たとえば、こんな時なんかに。 【シート1】(元データ)    A     B    C    D 1  1-1  キッチン  456  皿A 2  1-1  キッチン  123  皿B 3  2-1  ガーデン  258  糸A 4  1-1  キッチン  987  皿C 5  3-2  文房具   369  ペンA 6  1-1  キッチン  741  皿D    :    :     :    : キッチンの行だけを別シートに自動的に入るようにする。 ↓ 【シート2】(別のシート)    A    B     C    D 1  1-1  キッチン  456  皿A 2  1-1  キッチン  123  皿B 3  1-1  キッチン  987  皿C 4  1-1  キッチン  741  皿D    :    :      :   : 列とかズレてたらすみません; 自分だけではもうお手上げだったので、 どなたか宜しくお願いします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.8

VBAとオートフィルターを使った方法ですが、最近ほかの方へ紹介して便利といわれましたので。 別シートのシート名のタブを右クリックして コードの表示 をクリック VBエディターが起動するので Private Sub Worksheet_Activate() Cells.Clear Sheets("元データ").Rows("1:" & Sheets("元データ").Range("A1").End(xlDown).Row).Copy Range("A1").Activate ActiveSheet.Paste Application.CutCopyMode = False End Sub をコピーして閉じてください。 元データのオートフィルターを設定して キッチン だけが表示されるようにします。 別シートにするとオートフィルターで抽出した結果が出ています。

全文を見る
すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.7

ややこしい関数を利用するより フィルタオプションで抽出する方が分かりやすいと思う http://allabout.co.jp/gm/gc/297791/ 元データのSheet1を頻繁に修正してリアルタイムでの反映が必要の場合なら計算式が必要になるけど その場合はデータの入力形式や、処理法法を工夫して単純化する事の方が後々トラブルが少なくなると思う

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

(1)関数は関数式を入れたところの、1セルだけの値を決めることしか出来ません(エクセル関数の大原理) (2)しかしあるセルの関数式を連続して、複写することで、参照する番地を変化させる仕組みがあり、これが使えるときは (使えるように式を工夫して)、望みの行(列)に値をセットできる。 そのため関数式では出来ないとはならない。 ーー しかしGoogleで「imogasi方式」で照会すると数百の、この質問コーナーに出た、(しかし全部ではない)関数による抜き出し 方法の回答やその他が出る。 その考え方のタイプには、数種ある。 作業列を使うものと、そうでないもの、配列数式を使うものなどの分類ができる。 作業列など使わないほうが良いが、指揮が複雑になって質問するレベルの人には何を屋って居るか直ちには理解できないだろう。 エクセル関数では、条件による(本質問例では「キッチン」)抜き出し問題は、適してないと思う。 ーー エクセルにはフィルタやフィルタオプションなどの操作がありから、それを使うべきと思う。 ーー 抜き出し先のシートは、全セル長い複雑な関数式で埋め尽くされるので(元データが変わると全セル再計算されるので)、数千行になると、処理速度も鈍ると思う。 ーー 毎週数回はこのタイプの問題を質問する質問者が出るが、その難しさを判ってない初心者が多い。 >右のセルを検索値とすることが出来るものはあるんでしょうか 意味が不明。この質問の内容からすると、不適当。 === imogasi方式でやってみる 例データ Sheet1のA-E列  E列が作業列 1月1日 キッチン 456 皿A 1 1月1日 キッチン 123 皿B 2 2月1日 ガーデン 258 糸A 1月1日 キッチン 987 皿C 3 3月2日 文房具 369 ペンA 1月1日 キッチン 741 皿D 4 Sheet2のA1には「キッチン」(抜出する文字列)を入れておく。 E2の式は =IF(B2=Sheet2!$A$1,MAX($E$1:E1)+1,"") やっていることは、B列で「キッチン」の行に、上から連番を振っている。 ーー Sheet2に行って、(A1はキッチン) A2に =INDEX(Sheet1!$A$1:$D$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0),COLUMN()) と式を入れる。(とりあえず100行までの例にしている) 右方向にD列まで式を複写。 A2:D2を下方向に式を複写。 結果 Sheet2 キッチン 2011/1/1 キッチン 456 皿A 2011/1/1 キッチン 123 皿B 2011/1/1 キッチン 987 皿C 2011/1/1 キッチン 741 皿D #N/A #N/A #N/A #N/A A,列は表示形式を「日付、C列は数値に設定すること。 A1セルの「キッチン」を「文房具」に変えてみてください。 ーー #N/Aを出さないようにするには上記の式にIF関数をかぶせて =IF(ROW()-1>MAX(Sheet1!$E$1:$E$100),"",INDEX(Sheet1!$A$1:$D$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0),COLUMN())) として(Sheet2の行数が)Sheet1のE列の最高値(キッチンの該当行数のこと)を越えたら空白を返すようにする。 >excelの関数ってありますか 1つの関数では、そんな関数はない。今後は、単純な課題以外は(ここに質問が出るレベルの問題では)、「関数の組み合わせ」でやるのだ、と考えること。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.4です! たびたびごめんなさい。 画像がうまくアップできないようなので、Sheetの配置だけ・・・ 前回の数式はSheet1の2行目からデータがあり、(1行目からでも構いません) Sheet2のA2セルにSheet1のB列データの検索したいものを入力した場合に表示される数式です。 数式を入れるセルはSheet2のどこのセルでも構いません。 何度も失礼しました。m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! すでに回答は出ていますが・・・ 一例です。 一つ気になったのですがSheet1のA列は文字列表示になっている訳ですよね? (通常 1-1 のような入力だと日付として判断されますので・・・) データ量が多すぎる場合はオススメしませんが敢えて配列数式を使ってみました。 ↓の画像でSheet2のA2セルに検索したい物を入力すると表示するようにしています。 Sheet2のA5セルに =IF(OR($A$2="",COUNTIF(Sheet1!$B:$B,$A$2)<ROW(A1)),"",INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$B$1:$B$1000=$A$2,ROW($A$1:$A$1000)),ROW(A1)))) これは配列数式になってしまいますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列方向と行方向にオートフィルでコピーすれば、画像のような感じになります。 尚、余計なお世話かもしれませんが、質問に >右のセルを検索値とすることが・・・ とあるのですが、 1-1 を検索値にすればVLOOKUP関数が使用可能のような気がします。 参考になれば良いのですが・・・m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

作業列を使って作業を進めることがおすすめです。 例えばシート1のE1セルには次の式を入力して下方にオートフィルドラッグします。 =B1&COUNTIF(B$1:B1,B1) これで品名ごとに上の行から番号のついたデータが表示されます。 次にシート2では例えばA1セルにキッチンのデータを抽出した表を表示させるのでしたらキッチンと入力します。 次に例えばA2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(ROW(A1)>COUNTIF(Sheet1!$B:$B,$A$1),COLUMN(A1)>4),"",INDEX(Sheet1!$A:$D,MATCH($A$1&ROW(A1),Sheet1!$E:$E,0),COLUMN(A1))) これでシート2のA1セルにキッチン以外の品名を入れたらそのデータが表示されますね。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 作業列と関数を併用する方法と、関数のみで行えるが、計算処理の負担が大きい(結果が表示されるまでに、少し時間がかかる)方法があります。  今仮に、抽出するデータを指定するために、Sheet2のB1セルに、例えば キッチン と入力すると、Sheet2のB2以下や、Sheet2のA列、C列、D列の表示が自動的に行われるものとします。 【作業列と関数を併用する方法】  まず、適当な列(例えばSheet3のA列)を作業列として使用する事を決めます。  次に、Sheet3のA1セルに、次の数式を入力して下さい。 =IF(Sheet1!$B1="","",Sheet1!$B1&COUNTIF(Sheet1!$B$1:$B1,Sheet1!$B1))  次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に(Sheet1の元データの表の行番号を上回るのに充分な行数となるまで)貼り付けて下さい。  次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,B$1),"",B$1)  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNTIF(Sheet1!$B:$B,$B$1),"",INDEX(Sheet1!A:A,MATCH($B$1&ROWS($1:1),Sheet3!$A:$A,0)))  次に、Sheet2のA1セルをコピーして、Sheet2のA2セルとSheet2のC1~D2の範囲に貼り付けて下さい。  次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上で準備は完了で、後はSheet2のB1セルに、抽出の基準となる検索値を入力すると、抽出結果が表示されます。 【関数のみで行う方法】  まず、Sheet2のB2セルに、【作業列と関数を併用する方法】で入力した数式と全く同じ、次の数式を入力して下さい。 =IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,B$1),"",B$1)  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNTIF(Sheet1!$B:$B,$B$1),"",INDEX(Sheet1!A:A,SUMPRODUCT(ROW(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1)))*(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1))=$B$1)*(COUNTIF(OFFSET(Sheet1!$B$1,,,ROW(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1)))-ROW(Sheet1!$B$1)+1),$B$1)=ROWS($1:1)))))  次に、Sheet2のA1セルをコピーして、Sheet2のA2セルとSheet2のC1~D2の範囲に貼り付けて下さい。  次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上で準備は完了で、後はSheet2のB1セルに、抽出の基準となる検索値を入力すると、抽出結果が表示されます。

5258kou
質問者

お礼

すごく丁寧に教えていただいて、ありがとうございます! おかげで上手く作れました(^v^)♪

全文を見る
すると、全ての回答が全文表示されます。
  • yo5728
  • ベストアンサー率0% (0/0)
回答No.1

的外れな回答だったらごめんなさい。 関数を使わなくても、別シートのデータを入れたいセルに『=』で元シートのデータのセル値を入れると引っ張れませんか?

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

関連するQ&A

  • 一番下がどこかを確認する関数を知りたいのですが・・・

    タイトルではチョッとわかりにくいかと思いますが。。。 以下に簡単な例を記しておきますので、どなたかご教示おねがいします^^;       A列   B列   C列   D列 1行目 2行目    ○    3行目 4行目    ○        ○ 100行目       ○ 200行目                 ○ こういうようなシートがあったとします。 別シートの式で自動で○が入力される表なわけですが これらは、○があるセルもあれば、空白のセルもあります。 上のシートを例にすると、A列の一番下の○は4行目、B列は100行目、C列は4行目、D列は200行目、となっております。 一番下までの○が何行目になるのか。ということを知りたいのです。 もちろん自分で数えれば簡単にわかる結果ですが、これを自動で表示するような関数があればと思い、質問させていただきました。 私の知る関数の知識、また応用力ではお手上げ状態です、どなたかご存知の方、よろしくお願いします^^;

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

    こんにちは。 エクセル関数について教えてください。 (OS:WIN2000、エクセル2003) こんな表があって、別のシートの A1=200 A2=D A3=2・・・1行目D列の項目 と入力したときに A4に「はな」と表示させたいのですが Index関数とMatch関数の組み合わせだと思うんですが どうしたらいいですか? A列 B列 C列 D列 E列 1行 --- --- 1 2 3 2行 100 A いぬ くり 赤 3行 200 B ねこ いも 青 4行 300 C ぞう ねぎ 緑 5行 200 D とら はな 黄 6行 100 E うし みそ 朱 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・

  • エクセルの関数

    エクセルの関数 ですが、 SUMIF を使いたいのです。 シート1の 1行目には 見出しが入っています。 A2~A50に、A店 B店 C店 D店 がランダムに入っています。 B2~B50に、名前が入っています。 C2~C50に、売上の数字が入っています D2~D50に、すべてに 1 が入っています。 E2~E50には、ところどころに 1 が 入っています。 シート2に、SUMIFを使って、E2~E50に入っている 1 の人だけの 各店の合計を出したのですが、どうやったらいいのですか? シート2のA1にはA店 A2にB店 A3にC店 A4にD店 が入っています。 そうすると、シート2のB2には、 =SUMIF(Sheet1!A2:A50,A2,Sheet1!$C$3:$C$50) となるということでいいのですか? ですが、 これは、各店の全体の合計です。 やりたいのは、E2~E50に 1 が 入ってる人のみ 各店の 合計を シート2の B列にだしたいのです。 関数の方法を教えてください

  • エクセル関数

    エクセル2010を使っていますが、1つのシートAには販売時の日付、品番、数量、単価、販売額が記されており、同一ファイル内には別のシートBで指定した日付の売上明細を表記したいと思っていますが、うまく関数が組めません。どのような関数を組めば表記できますでしょうか?ちなみにシートAは1か月継続して使うため最大ラインがおおよそ1000行くらいで、シートBは最大50行くらいの表記が可能である必要があります(A5~A55行目) 指定した日付の売上明細(シートB)に表記が必要なので品番、数量、金額になります 指定する日付ですが、シートBの先頭行A1かB1に日付を入力し、A5行目から開始しようと思っています。A5は品番、B5は数量、C5は数量、D5は単価、D6は合計を表記したいと思っています

  • Excelの関数に関して教えて下さい

    パソコンはWindos98です。 ExcelのAシートに     A列    B列    C列    D列    (品名) (ロット) (容量)  (数量) 1行 みかん   123   100g  3 2行 りんご   456   100g  4 3行 ピーチ   789   120g  2 とある場合に新たなBシートの A1のセルに「りんご」と入力した場合に A1 品名 A2 ロット A3 容量 A4 数量 Aシートの2行目のデータをBシートのそれぞれの欄に 自動的に入るという関数はありますでしょうか? ちなみにAシートのりんごのデータは2行目にくるか 3行目にくるかは分からないのでどこの行に入力しても Bシートに反映されるというようにしたいのです。 補足もしますのでどうか宜しくお願いします。

  • EXCELの関数について

    いつもお世話になってます。ありがとうございます。 excelの関数についてお聞きしたいことがあり質問しました。      A列 B列 C列 …        a   c   e  g  i 1行 2日 ○  △ □ ● ■ となっているデータを      A列 B列 C列 …      a   b   c  d   e  f  g  h  i … 1行 1日 2行 2日 3行 3日 こんなシートに自動的に打ち込めるようにしたいのです。      A列 B列 C列 …      a   b   c  d   e  f  g  h  i … 1行 1日 2行 2日○    △    □    ●    ■ 3行 3日 が完成図イメージです。 一番上の色々なデータから表を完成させたいのですがどうすればできるでしょうか。 vlookupやhlookupでは一行ずつの打ち直しが必要になってしまいます。 よろしくお願いします。

  • エクセルの関数

      A B C D E F 1 × 8/1 8/2 8/3 8/4 8/5 2 ○ 3 4 3 4 5 3 △ 0 1 4 3 2 4 ■ 6 0 2 1 2 5 □ 5 3 2 1 1 6 ● 3 4 2 1 2 上記の表がSheet1にあり sheet2 に ○の8/3の数値を抽出する関数がわかりません。 =SUMIF(Sheet1!A1:Sheet1!A6,"○",Sheet1!D1:Sheet1!D6) で抽出できるものの、日付が変わったとき対応が全く出来なくて行き詰ってしまいました。行、列ともに条件が必要だと思うのですが、どなたか教えて頂けると助かります。

  • エクセルの関数についてです

    大変恐縮ですが、エクセルの関数について教えていただきたいと思います。 例 A B C D 1 175 141 210 98 2 47 70 417 39 3 64 845 32 626 4 79 194 54 85 5 224 68 85 110 上記A列からD列の数字が1行目から5行目まで5セットあります。 その中でAはBより大きくCより小さい(B<A<C)なおかつBはAより小さく Dより大きい(A>B<D)。 と、この条件を両方満たしている行だけを抽出したいと考えております(例では1行目が該当します)。 手元に約6万行分のデータがあり、何とか関数で処理したいものの詳しく分からず困っています・・・。 お忙しいところ申し訳ございませんが、どなたか関数をご存じでしたら 教えてくださると幸いです。 よろしくお願い致します。

  • エクセルの関数での質問です

    エクセルの関数での質問です sheet1に A B  C  D  E 1 ○ ○ ○ 1 2 ○ ○ ○ 3 ○ ○ ○ 2 4 ○ ○ ○ みたいな状態からsheet2に A B  C  D  E 1 ○ ○ ○ 1 3 ○ ○ ○ 2 のようにE列の数値順に行を並べることはできますか? エクセル初心者なのでわかりやすく教えていただけると助かります。

  • Excelでどのような関数を使えばいいでしょうか。

    関数について教えて下さい。 Excelで、同じBook内に以下のような2シートがあるときに、 (Sheet1)    A   B    C   D     1  1  あい   12  りんご 2     うえ   34  みかん   3     おか   56  イチゴ 4  1  おか   78  イチゴ (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3     おか   78   イチゴ 4     うえ   34   みかん  Sheet2のA列にSheet1にあるデータを入れたいのです。 まず、列B,C,Dのそれぞれのデータが横に3つ一致するものを探して 横3つのデータが同じなら、Sheet2のA列に、 Sheet1のA列にあるデータをシートBにも持ってくる、 というようなイメージです。 (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3  1  おか   78   イチゴ 4     うえ   34   みかん      ↑このようにしたいのです。 A列にどのような関数を入れればいいのでしょう。 (A列にあるのは1か空欄かのどちらかです。 同じ3つの組み合わせで、1の場合と空欄の場合両方があることはありません。) また、Sheet2には、A列に1とついた行に色を付けたいのです。 例えば、上記の例ですと Sheet2のB3:D3のセルに色をつけたいのです。 関数や条件付書式などで、できますでしょうか。

専門家に質問してみよう