excel2000です。

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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルでB列の数値がA列(A1:A10)の範囲に存在するかどうかを知りたい

こんばんは。
エクセルでこのようなことができるのかどうか分からないので、教えてください。

B列の数値がA列(A1:A10)の範囲に含まれる数値なら○、含まれない数値なら×と、C列に表示したいのですが、エクセルでそのようなことはできるのでしょうか。
できるのであれば方法を教えていただけますでしょうか。
よろしくお願いいたします。

<<最終的な結果は以下のように表示したいです>>

  A B C

1 12 19 ○

2 15 20 ○

3 19 28 ○

4 20 30 ×

5 23 34 ○

6 28 35 ×

7 32 38 ×

8 34 39 ○

9 39

10 40

Aベストアンサー

セル C1 に式 =IF(COUNTIF(A:A,B1),"○","×") を入力して、此れを下方にズズーッと複写

QA列の特定条件のセルのときC列の数値を集計する関数

以下のA列に1から3の値が入っている時、
例えば1の時のC列の数値を集計できる関数はありますか?

A列1の時調べるとC列は1が1個、2が1個、3が1個です。
A列2ではC列は1が1個です。
A列3ではC列は1が1個です。

_|A|B|C
1|1| |3
2|2| |1
3|1| |2
4|3| |1
5|1| |1

よろしくお願いします。

Aベストアンサー

こんにちは!
私もNo.1さんのように単純にSUMIF関数でOKかと思いましたが・・・

A・C列は数値というより、「男」「女」等の区別なのですね?

そうであれば、SUMPRODUCT関数で対応できると思います。
↓の画像では A列=1で C列=1の場合の個数のみの計算式を入れています。
=SUMPRODUCT((A2:A6=1)*(C2:C6=1))
他の求めたいセルはアレンジしていただければ、希望通りになると思います。

尚、余計なお世話かも知れませんが・・・
男、女などの条件が数字だと勘違いの原因になるかもしれませんので、
A列をそのまま「男」「女」
C列を「はい」「いいえ」「どちらでもない」
=SUMPRODUCT((A2:A6="男"(C2:C6="はい"))
としても同じ結果が得られるはずです。
以上、参考になれば幸いです。m(__)m

QA1セルにAと入力すると、A2セルに3000A3セルに2000A4セルに1000と表示させたい。

A1セルに「A」と入力する1回だけで、
A2セルに「3000」
A3セルに「2000」
A4セルに「1000」
A5セルに「合計数字」を表示させたいのですが、
式をご教授願いたいです。

よろしくお願いします。

Aベストアンサー

D1:G3
A500030001000
B500300130
C1200800300
A1にA,B,Cのどれかを入れる。
A2に =VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE)と入れて、
A4まで(G-D-1列数だけの行数)式を複写する。
結果
A1がBの場合A1:A4は
B
500
300
130

A1の空白の場合に対処して
=IF(A1="","",VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE))
が良いでしょう。
(既回答とほぼ同じ式ですが、1箇所違うところがあります。)

Aベストアンサー

書式>条件付き書式

セルの値が 次の値より小さい を選択
値は$B1とし、書式を設定。
設定したセルをコピーすればできませんか?

Qエクセル:A列とB列に同じ数値が合った場合に左側のA列の方を強調したい。

エクセル2000で

A1=12 A2=16 A3=24 A4=5 A5=6
B1=16 B2=23 B3=89 B4=6 B5=10

と入力されていたとします。この場合にA列とB列には16と6が共通の数として存在しています。

そこで、共通な数値が入力されているセルのうち、最も左側にある列(この例の場合はA列)を強調したいのです。関数を使う場合の数式をご存知の方がいらっしゃいましたら教えていただきたいと思います。


強調の仕方は、

1太字にする。
2セルを塗りつぶす
3文字の色を変える

などどんな手段でも結構です。

Aベストアンサー

(例データ)A1:B5
1216
1623
2489
56
610
(条件付き書式)
A1:A5を範囲指定
書式
条件付き書式
式が
=COUNTIF($B$1:$B$6,A1)>=1
書式設定(例えばセルの色を緑に)
OK
(結果)
16(A2)
6 (A5)
が緑になった。
A1:A5を範囲指定して、書式設定すると、A1をA2:A5に
コピーする必要はありません。
コピーと同じ効果になっています。


人気Q&Aランキング

おすすめ情報