[[20150423175823]] 『決まった範囲で1ずつ足していきたい』(かの) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『決まった範囲で1ずつ足していきたい』(かの)

    A       B     
1
2
3  ○○   XXXXX
4
5
6
7
8
9  ●●   △△△

上記のようなセルの状態で
A5に「1」を入力し
A8まで1ずつ足していきたいと思っています。
(上記の場合はA8が「4」になります)

条件としては
1.列は固定ですが行の数値はその都度違います。
2.必ず「○○」の2つ下のセルが「1」になり、「●●」の上のセルで終わります
3.「○○」の右隣には「XXXX」が、「●●」の右隣には「△△△」が必ずあります。
4.「○○」の2つ下のセルが「●●」になることもあり、その場合は何の動作もいりません。

ご教授のほどお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 A列に式をいれておくのは無理っぽいんじゃないですか?
 ●● や 〇〇 が 入るわけですよね。式を入れても、そこは消される。
 で、次に「可変」ですから別の行に ●● や 〇〇 を入れる。そうすると、その前に●● や 〇〇が入っていたところに
 また、式をいれなおさなきゃいけない。

 そうするぐらいなら、間の先頭から2番目のセルに 1 をいれて、連続データで連番作成のほうが早い?

 別の列(たとえばC列)に数式を入れて対応というのであれば、関数専門家さんならできるんでしょうね。
 関数音痴のβなら、VBAでしか、対応できませんね。(VBAならA列で可能) 

(β) 2015/04/23(木) 18:53


ご回答ありがとうございます。

すいません、VBAで対応したいと思っています。
言葉足らずですいません。
(かの) 2015/04/23(木) 18:56


 前回の処理で連番がふられているとしても、その事前のクリアはマクロ内では行っていません。

 Sub Test()
    Dim pos As Range
    Dim f1 As Range
    Dim f2 As Range

    Set pos = Range("A" & Rows.Count).End(xlUp)
    Set f1 = Range("A1", pos).Find(What:="●●", Lookat:=xlWhole, After:=pos)
    If f1 Is Nothing Then Exit Sub
    Set f2 = Range(f1, pos).Find(What:="○○", Lookat:=xlWhole, After:=pos)
    If f2 Is Nothing Then Exit Sub
    If f2.Row - f1.Row < 3 Then Exit Sub

    f1.Offset(2).Value = 1
    Range(f1.Offset(2), f2.Offset(-1)).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=1, Trend:=False

 End Sub

(β) 2015/04/23(木) 19:10


なるほど〜
(かの) 2015/04/24(金) 11:04

 ↑ ●● と ○○ が逆でしたね。 ○○ が上でした。

(β) 2015/04/24(金) 11:28


また言葉足らずでしたが
○○と●●に入るのは数値ですが値は決まっておりません。

その場合は検索で探せなそうなのですが
どうすればいいでしょうか?

以上、宜しくお願い致します。
(かの) 2015/04/27(月) 11:50


 数値であろうが、文字列であろうが、検索する値が決まっていれば検索できますね。
 逆にいえば、その値がわからなければ、神様でも検索はできないわけです。

 ○○ や ●● に相当する数値を、どのように与えたいですか?
 これはコードの問題ではなく、処理手順として、(かの)さんが、どんなふうにして指定したいかという、そのイメージを考えてみてください。

 シートのどこかに、その数値があるなら、それらを選択して処理開始でもいいでしょうし、あるいは
 インプットボックスなんかで、開始数値、終了数値を指定させることも考えられますね。

(β) 2015/04/27(月) 12:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.