好きなおでんの具材ドラフト会議しましょう

excel2000です。

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

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

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

本当に困っています。
お力を貸してください。よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/29 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報