OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

EXCELで数値の検索

  • 困ってます
  • 質問No.126097
  • 閲覧数153
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 97% (43/44)

excel2000です。

あるセル範囲の中から、数値の入っているセルを探し出し、
「計」の字のあるセルの前までその数値を繰り返す・・・という表を
作りたいのですが、どうしたらいいのかわかりません。

例)
A3に「1」、B6に「計」が入っています。
A1からA5の範囲から数値の入っているセル(=A3)を探し出し、
C1:C5に「1」を並べる。
続いてA8に「2」、B11に「計」が入っていて、
C7:C10まで「2」を並べる。

という感じです。
A列の範囲は毎回変わり、B列の「計」の次の行から、
次の「計」の手前までの範囲です。
数値が入っている場所(A3やA8)も毎回変わります。

本当に困っています。
お力を貸してください。よろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

参考に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

お礼率 97% (43/44)

ありがとうございます!バッチリできました!
前回に引き続きまたしてもnishi6さんに助けていただきましたね。
本当にありがとうございました!
投稿日時 - 2001-08-29 23:21:08
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ