[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『決まった範囲で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: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.