• ベストアンサー

【EXCEL2003】範囲に含まれた項目を全部抜き出す関数

質問してばかりで恐縮ですが、また行き詰ってしまいました。 皆さんのお知恵をお貸しください。 添付の画像をご覧いただくと分かりやすいと思いますが、範囲指定するのは『売価』です。 指定した範囲に含まれた売価の行項目を抜き出したいのです。 (表1)から100円以上200円未満の売価の商品を抜き出して(表2)を作りたいのです。 ここで質問した続きになります。 http://oshiete1.goo.ne.jp/qa5628538.html よろしくお願いいたします。

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

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

No.1です! たびたびお邪魔します。 前回の数式はSheet1のデータが100行目まで対応できる数式でした。 補足を読ませていただくとデータが150個くらいあるということなので 101行目以降のデータが正確ではないと思います。 ということで・・・ 前回の表はそのままで200行目まで対応できるような数式にしてみました。 Sheet1の作業列E2セルの数式を =IF(OR(A2="",COUNTBLANK(Sheet2!$F$1:$F$2)>0),"",IF(AND(B2>=Sheet2!$F$1,B2<Sheet2!$F$2),RANK(B2,$B$2:$B$200,1)*1000+ROW(A1),"")) としてみてください。これをフィルハンドルの(+)マークでダブルクリックか、オートフィルでずぃ~~~!っと下へコピー! そして、Sheet2のB2セルに =IF(COUNT(Sheet1!$E$2:$E$200)<ROW(A1),"",INDEX(Sheet1!A$2:A$200,MOD(SMALL(Sheet1!$E$2:$E$200,ROW(A1)),1000))) という数式を入れ、列方向と行方向にオートフィルでコピーしてみてください。 たぶん大丈夫だと思います。 どうも何度も失礼しました。m(__)m

jiyoun
質問者

お礼

何度もお返事いただき恐縮してます(_ _。) 完璧です! 一桁増やせばいいだけのことだったんですね。 Excelとは奥が深いものです。 また行き詰ったときにお世話になるかもしれませんが、よろしくお願いいたします。 ありがとうございました。

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

その他の回答 (4)

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.4

もしVBAでやりたいのなら、こういうのも簡単かと。 Sub 条件つき転記() Const 最低値 = 100 Const 最大値 = 200 Dim 行1 As Long, 行2 As Long, 行末1 As Long, 列 As Long, 列末 As Long ' 表1の位置は("A2")分かっていると仮定します 行末1 = Range("A2").End(xlDown).Row 列末 = Range("A2").End(xlToRight).Column ' 新しい表を2行開けた下に作る 行2 = 行末1 + 3 Cells(行2, 1) = "表2" 行2 = 行2 + 1 Range("A2:D2").Copy Cells(行2, 1) 行2 = 行2 + 1 ' 新しい表に条件にあう行だけを転記 For 行1 = 3 To 行末1 If Cells(行1, 2) >= 最低値 And Cells(行1, 2) <= 最大値 Then Range(Cells(行1, 1), Cells(行1, 4)).Copy Cells(行2, 1) 行2 = 行2 + 1 End If Next End Sub Sub 黄色いマーク() Const 列 = 7 ' データのある列 Const 行頭 = 20 ' データのある行 Const 上限 = 59 Const 下限 = 50 Dim 行3 As Long, 行末3 As Long 行末3 = Cells(行頭, 列).End(xlDown).Row Debug.Print 行末3 For 行3 = 行頭 To 行末3 If Cells(行3, 列) >= 下限 And Cells(行3, 列) <= 上限 Then Cells(行3, 列).Interior.ColorIndex = 6 End If Next End Sub 色つけなどはExcelのマクロ自動記録を使えば調べられますよ。

jiyoun
質問者

お礼

ご回答ありがとうございます。 今回は、VBAを使ったものを希望していなかったので関数式を採用しますが、 その後上記のVBAを研究してみました。 実際やってみてかなり使えそうな感じがしました。 これをきっかけに今後はこっちの研究も進めていきます。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.3

[フィルタオプションの設定]による求め方 (此れが最も簡単!) 1.セル E3 に式 =AND(B3>=100,B3<200) を入力 2.次の条件で[フィルタオプションの設定]を実行    抽出先     指定した範囲    リスト範囲   $A$2:$D$10    検索条件範囲  $E$11:$E$12    抽出範囲    $A$13:$D$13 ただそれだけ。ネ、簡単でしょ。 ただし「売価を昇順で」でなく、「表1」の順序のまま。

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

No.1です! たびたびごめんなさい。 前回の作業列の数式では降順に表示されてしまいますので、 ↓のように訂正してください。 作業列E2セルの数式は =IF(OR(A2="",COUNTBLANK(Sheet2!$F$1:$F$2)>0),"",IF(AND(B2>=Sheet2!$F$1,B2<Sheet2!$F$2),RANK(B2,$B$2:$B$100,1)*100+ROW(A1),"")) でオートフィルで下へコピーです。 Sheet2の数式はそのままでOKのはずです。 これでSheet2には売価の昇順で表示できると思います。 どうも何度も失礼しました。m(__)m

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

こんばんは! 一例です。 ↓の画像で説明させていただきます。 左側が元データのSheet1で右側のSheet2のF1・F2セルに ○以上・△未満 の数値を入力すればSheet2に抽出できるようにしています。 Sheet1に作業用の列を使っています。 Sheet1の作業列E2セルに =IF(OR(A2="",COUNTBLANK(Sheet2!$F$1:$F$2)>0),"",IF(AND(B2>=Sheet2!$F$1,B2<Sheet2!$F$2),RANK(B2,$B$2:$B$100)*100+ROW(A1),"")) という数式を入れオートフィルでずぃ~~~!っと下へコピーします。 そして、Sheet2のA2セルに =IF(COUNT(Sheet1!$E$2:$E$100)<ROW(A1),"",INDEX(Sheet1!A$2:A$100,MOD(SMALL(Sheet1!$E$2:$E$100,ROW(A1)),100))) という数式を入れオートフィルで列方向と行方向にコピーすると 画像のような感じになります。 尚、数式はSheet1の100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

jiyoun
質問者

補足

出来た!と喜んだのですが、よく見ると範囲外の商品が混じっていました(T-T ) 作業列は正しく範囲内のものが選択されているようです。 実際作るデータは商品名が150個くらいあります。 売価列の数値がアトランダムに並んでいると、範囲外のものを含んでしまうようです。 ほとんど出来上がっているのに、なんだか悔しいです・・・

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

関連するQ&A

  • vlookup関数の範囲項目を他のセルで指定する方法

    vlookup関数の範囲項目を他のセルで指定する方法 質問をうまく文章にすることができる自信がないのですが、 がんばります。 vlookup関数の2つ目の項目は範囲は 「'[ファイル名.xls]シート名'!$a$1:$z$100」のようになりますが、 これを他のセルで指定したいと思っています。 もし方法をご存知の方がいらっしゃいましたら、 ご教授お願いいたします。 ちなみに 3つ目の項目は「abs(A1)」のように記入したところ できました。 ※この場合、A1のセルに「4」と記入すると4行目を答えるようになります。

  • Excel-VBAで、Loop処理させるセルの範囲を指定したい

    わたしが http://oshiete1.goo.ne.jp/kotaeru.php3?q=2222401 に示したマクロですと、 1行目から100列×100行の範囲を塗られてしまいますが、 【5行目から】、100列×100行を塗らせるように するには、どのように書き換えたらよいでしょうか。 よろしくお願い致します。

  • Excel97 印刷範囲の設定

    ある大きな表を作っており、3行目に表の項目があります。 この項目にオートフィルタを設定し、データを振り分けたものを何回か印刷するという ことをしています。 このとき、1行目と2行目は印刷したくなく、今は毎回印刷範囲を指定しているのですが、 1行目と2行目のセルを「表示しない」に設定する以外で、簡単に行える方法はないでしょうか。 ※印刷範囲設定で、開始行は3行目でいいのですが、終了行が毎回違うため、その都度 印刷範囲を設定しなければいけないのが、煩わしいので。

  • どんな告白の言葉がいいのでしょうか?

    以前から私の恋愛のことで質問させていただいていますが、その続きの 質問をさせて下さい。何度も質問となってすいません。 以下は以前の質問です。 http://oshiete1.goo.ne.jp/qa2695533.html http://oshiete1.goo.ne.jp/qa2744241.html http://oshiete1.goo.ne.jp/qa2753241.html http://oshiete1.goo.ne.jp/qa2802263.html 相手の女性とは友達以上恋人未満といった感じです。 先日相手の誕生日があり、プレゼントを渡しました。あげたのは相手の 希望のジャンルの品と私が選んだちょっとしたアクセサリーです。 アクセサリーは気に入ってくれた様子でした。 ここで以前質問させていただいた時に、誕生日ではなく、後日告白しては どうかとの回答があり、確かにせっかくの誕生日に告白してうまくいか なかったことを考えると後日の方がいいかなと思い今度会う時に告白を しようと考えています。相手とは知り合ってそれなりに時間がたっており、 私は結構親しくなっているつもりでいます。でも相手にすればどうなのか? ただの友達?それとも... ストレートに言うのがいいのか、それとももっと別の言い方があるのか、 できれば過去の質問もご覧いただき、回答をお願いできますでしょうか。

  • セルの指定範囲について

    Word2000でビジネス文書(点数分布グラフ)作成の練習をしています。 表は項目が左から、『点数』『人数を*で表すグラフ』『人数を示す数字』と三項目にわかれています。 まずはじめに表の挿入で『3列×5行』の表を作成、文字や数値を入力します。 その次に*が多くて2行に渡っているものがあるので、*が1行に収まるように、2行に渡っている行のみ『セルを範囲指定』して、右側の縦線をドラッグする、と解説にあるのですが、どのようにして『範囲指定したセルの縦線のみを移動』させるかわかりません。 2行にわたっている列を反転させて、右クリック、自動調整、文字列の幅に合わせるをクリックしてみましたが、全ての文字列が一斉に移動してしまい、それぞれの点数にあわせた棒グラフを作成できません。 ●『範囲指定したセルの縦線のみを、点数分だけ移動させる』というのはどうすればできるのでしょうか? ご存知の方、アドバイスください! よろしくお願いいたします。

  • excel2000

    excel2000の表形式のデータが300行程あります。 表に対し、オートフィルター機能でもって特定のキー項目を抜き出し列でキー項目を指定し対応する行を表示させます。 このとき表示されたデータ数が何行分ということを知るための簡単な方法はないでしょうか。

  • 畳の製作範囲

    畳の製作範囲についてこちらで検索すると 過去の質問に http://oshiete1.goo.ne.jp/qa3575458.html いくらでも作れると書かれていましたが、 1,820×910を超える畳も製作できるのでしょうか? 以前、いくらでも小さくはできるけど大きくは出来ないと聞いたことがあるのですが?

  • Vlookup の指定範囲、左端でなきゃだめ?[Excel 2003]

    Excel 2003 の Vlookup 関数について質問です。Vlookup の検索範囲の指定についてです。検索値と同じものを検索範囲から表引きするのですが、検索値と同じものを探す範囲が、範囲内の一番左の列、というのは変更不可能なのでしょうか?たとえば、検索値=ドラえもん か ノビタ か 静香ちゃん のとき、年齢を表引きする数式を作りたい時、A列に人物、B列に年齢が表1のように書かれていたら =vlookup(X1,A1:B3,2,false) とできます。しかし問題は表2のように、年齢の列と人物の列が逆になっていた場合です。その場合は vlookup 関数は使えませんか?指定行をマイナスにしてみてもダメなようでした。 [表1] ドラえもん 3歳 ノビタ 15歳 静香ちゃん 14歳 [表2] 3歳 ドラえもん 15歳 ノビタ 14歳 静香ちゃん

  • 【Excel】リストの追加項目関数式でエラーばかり

    セル範囲に名前を付けたグループを指定し、入力規則でリストを使って、コンボボックスから選択できるように設定する。 たとえばシート2のA1セルに「練習」という名前を付けた項目すべてをコンボボックスから指定したい。 しかし、このリストは追加される可能性があるが、範囲指定を繰り返すのは面倒なので関数にしたい。というケースです。 質問(1)シート1のリスト一覧に項目が増えた場合でオフセット関数を使う場合、以下の式でよいらしいのですが… まずは式の読み方についてです。 =OFFSET($A$1, 0, 0, COUNTA($A:$A), 1) OFFSETは =OFFSET(基準,行数,列数 [,高さ,幅]) 『基点のセルから○行△列移動し、そこから高さと幅の分だけ範囲選択します。 基点のセルを動かす必要がない場合は、行と列は0を指定します。』 上の例の場合ですとこの式は 起点のセル→$A$1(A1を絶対参照とする) 行数→0 列数→0 しかし COUNTA($A:$A), 1 については、($A:$A)はA列を絶対参照ということなのでしょうか? またこの1はどのような意味なのでしょうか? 質問(2) 実際この関数を定義する場合「データ」の「名前の定義」の「参照範囲」に入力するそうですが…エラーとなってしまいます。 質問(3) また、(2)の「名前」についても、元のリスト候補となるグループと同じ名前にした場合「別の名前を指定してください」とエラーがでます。 このエラーにより「データの入力規則」から指定する範囲も、「名前の定義」から指定する関数も「名前の管理」一覧に登録されることがわかりますが、テキストによっては同じ名前で登録できている説明もあるのです。 何が間違っているのでしょうか? いろいろ調べたりしましたが、いろいろな例示があるので、逆に混乱してきます(お手上げ状態)。 関数は学び始めたばかりですので、アバウトな解説よりも具体的にご指導いただるご回答をお願いいたします。

  • Excel 関数を教えてください

    はじめまして。どうか、お力をかしてください。 関数を勉強しはじめたばりなのですが、自分で考えて 試してみてもどうもうまくいきません。 どの関数を利用したらいいのかアドバイスをお願いします。 別のシートにある表((1))から、数値((2))の近似値を検索したいのです。 まず表((1))の行方向にコード(項目)がいくつかあります。 数値((2))にはコードがふってあるので、表((1))の同じコード(項目)の列を検索して、その列から数値((2))の近似値を検索したいのです。 表の列を指定してその中から近似値を検索したいとゆうことです。 いろいろ考えて試してみたのですがうまくいきません。 どの関数を利用したらよいか、列や行、検索範囲の指定についてもポイントが あれば教えてください。 説明が分かりづらいかもしれませんが、宜しくお願いします。

専門家に質問してみよう