EXCELで数値の検索方法と表の作成方法

このQ&Aのポイント
  • EXCELの数値の検索方法について教えてください。
  • ある範囲内の数値の入っているセルを見つける方法を知りたいです。
  • 数値と「計」の字のあるセルを見つけ、それを元に表を作りたいです。
回答を見る
  • ベストアンサー

EXCELで数値の検索

excel2000です。 あるセル範囲の中から、数値の入っているセルを探し出し、 「計」の字のあるセルの前までその数値を繰り返す・・・という表を 作りたいのですが、どうしたらいいのかわかりません。 例) A3に「1」、B6に「計」が入っています。 A1からA5の範囲から数値の入っているセル(=A3)を探し出し、 C1:C5に「1」を並べる。 続いてA8に「2」、B11に「計」が入っていて、 C7:C10まで「2」を並べる。 という感じです。 A列の範囲は毎回変わり、B列の「計」の次の行から、 次の「計」の手前までの範囲です。 数値が入っている場所(A3やA8)も毎回変わります。 本当に困っています。 お力を貸してください。よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

参考にVBAを書いてみました。 処理を行いたいB列の範囲(連続範囲)を選択して実行します。計と計の間のA列の行には数値は1つのみあるとしています。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュールで標準モジュールを挿入し、そこに貼り付けます。 Public Sub Kensaku_Nyuryoku()   Dim startRow, endRow As Long '開始行,最終行   Dim findRow As Long '『計』があった行   Dim ATAI As Long 'A列の値   Dim rw, rwC As Long '行カウンタ,行カウンタ(C列)   With Selection '検索範囲を特定する。Excel97のため split関数がない!     startRow = Range((Left(.Address, InStr(.Address, ":") - 1))).Row     endRow = startRow + .Rows.Count - 1   End With   rw = startRow '検索開始行   While rw <= endRow     While Range("B" & rw) <> "計" '『計』を探す       rw = rw + 1: If endRow < rw Then Exit Sub     Wend     findRow = rw     'A列の値を特定する     ATAI = WorksheetFunction.Max(Range("A" & startRow & ":" & "A" & findRow - 1))       'C列に書き込む       For rwC = startRow To findRow - 1         Range("C" & rwC) = ATAI       Next     startRow = findRow + 1 '新たな検索開始位置     rw = rw + 1 '次の行   Wend End Sub

usajun
質問者

お礼

ありがとうございます!バッチリできました! 前回に引き続きまたしてもnishi6さんに助けていただきましたね。 本当にありがとうございました!

関連するQ&A

  • 【Excel】ある文字列を含んだ行の数値をとりだしたい

    Excel2003を使用しています。       A列     B列      C列     D列   1行  2行  ○月計    100      50      50  3行  4行  5行  ×月計    200      100     100 A列に「月計」を含んだセルがあったら、そのD列は[=B-C]としたいのですが どうすればいいでしょうか? 例えば、上記の場合だとA2セルに「○月計」と入っているので、D2セルには[=B2-C2]の計算結果を 表示させたいのです。 いろいろやってみましたが、うまくいきません。 よろしくお願いします。

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • 検索値に数値や文字列で検索してもエラーになる

    WIN7 EXCEL2007でマクロ作成中の初心者です。  A列(セルA3からA20)に  組、 Z3、 B4(1)、45、8 などの文字列や数値が表示されています。  (セルA列には、VLOOKUPで他の表から検索したものです。)   そして、C列に(セルC3からC20) セルA3が 組のときは   セルC3に 5:00 を入れなさい セルA4が Z3のときは   セルC4に 6:00 を入れなさい セルA5が B4(1)組のときは セルC5に 9:00 を入れなさい    セルA6が 45  のときは セルC6に 11:00を入れなさい という式をいれたいのです。 ちなみに自分で以下の式をいれて確認したところ =VLOOKUP(A3,データ範囲名,2,FALSE) =VLOOKUP(A4,データ範囲名,2,FALSE) =VLOOKUP(A5,データ範囲名,2,FALSE) 以下つづく するとセルA3の表示が W3 のときは #N/Aになり W3のとき正常に表示されます。 45という数字も出来ました。 検索値は文字列でも数値でもOKと聞いてますが、なぜ出来ないのでしょうか? 他のfindとか別の方法でも出来る方法教えていただきたいです。

  • エクセル関数 条件適合時にゼロ値を表示したい。

    エクセルの計算結果のゼロ値の表示方法について教えてください。 セルは、A列・B列・C列に各7行があります。 A1 B1 C1 A2 B2 C2 A3 B3 C3  ・  ・  ・  ・  ・  ・ と言う感じです。 A列とB列は任意の数値を入力し、C列は(A列-B列)の計です。 例えば、C列の計算結果として、次のように数字を表示させたいのです。     A列  B列  C列 1行   8   6   2 2行             (A列に未入力なので、C列にはゼロ値も表示しません) 3行   5   5   0 (計算結果として、C3にはゼロ値を表示します) 【A列に数値が入るかどうかは、その度に変わります。次の時にはB1せるにも数値が入る可能性があります】 C1セルに計算式を入力し、下のセルにはフィルドラッグで入力できるような式はあるでしょうか? よろしくお願いします。

  • エクセルで数値の大小を判別する方法について

    とても簡単のように思えたのですが、いざやってみると、あれ?、う~ん!、なかなかうまくできません。どなたかご教授ください。たとえば、次のような場合、    A列  B列  C列 1行  1       小 2行      3 3行 4行  8 5行      5   小 上記の表の意味は、A列・B列のそれぞれ数値の隣接した1行目と2行目、4行目と5行目の数値を比較して、小さい方の数値に"小"をC列に表示させたい(この時、"小"は小さい方の値の行に表示するものとする)。この場合、C列にはどのような関数を設定すればよいのでしょうか?

  • EXCEL:種別ごとに数値の和を求める式

    種別ごとに和を集計する必要があります。 種別ごとの数値を求めるためには、各計の所にどのような式をかきたらよいのでしょうか。 下記に例:Dのセルの式 aだけでよい。 A列 B列 C列  D列 種別 数値 種別   計 a 1 a種計  1 b 4 b種計 13 c 5 c種計 12 c 7 b 9

  • エクセルの数値選択で

       A   B   C   D --------------------------- 1  100   500  1000  5000    … 2   3     4     5     6     … 3   5     3     5     7     … 4   2     3     4     5     … 5   4     5     2     7     … の表があったとします。 X1のセルに数値を入力すると、その数値が100未満ならX2に3~X5に4を代入、100<=X1<500ならX2に4~X5に5を代入するなど、複数の列に対し1行目の数値を判定し2行目以下の数値を指定のセルに代入したいと思います。 4以上の複数列に対しては、どのような式を使えばいいのでしょうか。IF式を使ったのですがうまくいきません。 どなたかご教示ください。

  • エクセルの文字列の数値を足す

        A    B     C      D   合計 1  ああ8  いい8  ああ6  ああ2   8 と、10列くらいある行(A列からJ列まで)があります。 ひとつのセルに文字と数値が入っています。 で、「ああ8」と「いい8」以外の数値を足したいんです。 上の場合、C列の「ああ6」とD列の「ああ2」を足して「8」になります。 毎回、手作業で足しているのですが、結構な手間で。。 何かいい案があればと思い、こちらへ投稿させていただきました。 オフィス2007を使用しています。ご教授ください。

  • excel関数を用いてある行の範囲内の数値のみを違う行に抽出し、同じ列に対応する値も引っ張ってくることは可能ですか?

        A   B   C   D 1   33   180 2   58   300 3   89   310 4   152   240 5   205   74 上のような表になっている時に、EXCEL関数を用いて、[A]行の「60以上、180以下の数値」のみをC列に引っ張ってきて、なおかつ[A]行のそれぞれの値に対応する[B]行の値をD行に引っ張ってくることは可能でしょうか? 理想的な結果として   A     B      C      D 1   33  180     58    300 2   58   300    89    310 3   89   310    152    240 4   152   240 5  205  74 というようになってほしいのです。 オートフィルターの範囲指定を用いると、C行に範囲内の値を引っ張ってくる事は出来たのですが、関数ではない為、他の表に応用が効かず、毎回フィルターをかけなくてはいけなかったです…そのため出来れば関数を使いたいのですが、何か方法は無いものでしょうか…

  • エクセルで数値が入力されているセルのアドレス取得

    エクセルである範囲の中から、数値が入力されているセルのアドレスもしくは範囲を取得したいです。      A列  B列  C列  D列  E列・・・ 1行目  20   10    2行目       11        15   10   3行目                25   30  範囲指定 A1:E3 結果 A1,B1,B2,D2,D3,E2,E3     もしくはA1:B2,D2:E3 という結果がでるとうれしいです。よろしくお願いします。

専門家に質問してみよう