アプリ版:「スタンプのみでお礼する」機能のリリースについて

2列のエクセルデータ(A列とB列)で、A列はA2からA10000ほどの列です。
B列はA列と1対1で対応していて、A列と同じ数だけ列があります。
A列は6桁ほどの小数ですが、頻繁に連続した重複があります。
B列はすべて0(同じ値なら0じゃなくても可)です。
教えてほしいのは、A列で連続して同じ値が続くときにそれに対応するB列に0.1ずつ加算していくプログラムです。
つまり以下のようです

 A列   B列      
0.11111  0        
0.11182 0
0.11223   0
0.11223   0
0.11223   0
0.12373   0
0.13422  0
0.13422   0
0.13422   0
0.13422   0
0.15563   0

↓マクロ実行後

 A列     B列
0.11111 0
0.11182 0
0.11223 0
0.11223 0.1
0.11223 0.2
0.12373 0
0.13422 0
0.13422 0.1
0.13422 0.2
0.13422 0.3
0.15563 0

こんな感じにできるマクロはEXCELVBAでどうすればいいでしょうか?
列が10000列くらいあるので手動ではなかなかできません。
教えてください。

A 回答 (4件)

NO1です


返信遅れて、すいません。
どういう意味か分かりませんので、補足をお願い致します。

>B列のほうはすべて同じ値ではなくて0か1のランダムな値だったのです

同じ 0.11223 がA列にいくつかあった場合、B列には0もあれば1もあるという意味でしょうか?
    • good
    • 0
この回答へのお礼

0.11223 がA列にいくつかあった場合、その重複が0か1のどちらかということでした。
説明不足ですいません。
Ce_faci様に教えていただいた式とNo,2様におしえていただいた方法でできました。
ありがとうございました。

お礼日時:2007/01/17 03:43

こんには。



>A列で連続して同じ値が続くときにそれに対応するB列に0.1ずつ加算していくプログラムです。

質問がよく分かりませんが、小数のみの加算ですか?
これは、数式でも良いような気がしますが……。

#2 さんの方式のマクロ

Sub TestAddFig()
Dim i As Long
Dim j As Long
Const ADD As Double = 0.1
Application.ScreenUpdating = False
With Range("A1", Range("A65536").End(xlUp))
 For i = 2 To .Rows.Count
  If .Cells(i - 1).Value = .Cells(i, 1).Value Then
    j = j + 1
   .Cells(i, 2).Value = .Cells(i, 2).Value + ADD * j
 Else
    j = 0
  End If
 Next i
End With
Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。
マクロを知りたかったので勉強になりました。

お礼日時:2007/01/17 03:36

こういうことでしょうか?



 A列     B列
0.11111 0
0.11182 1
0.11223 0
0.11223 0.1
0.11223 1.2
0.12373 0
0.13422 1
0.13422 0.1
0.13422 1.2
0.13422 0.3
0.15563 0

でしたら、No.1さんの式をC列に書いて(BをCにします)、C1:C10000を選択してコピー、右クリック→形式を選択して貼り付け→加算にチェック→OKでできるとおもいます。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。
ほんとうにそうですね。B列がランダムであってもNo.1様の教えてくださった式を用いれば応用することができますね。
本当にありがとうございました。

お礼日時:2007/01/17 03:31

A列は並べ替えて、セルB10000に


=IF(A10000=A9999,B9999+0.1,0)
を入れて、あとはセルB2までコピーすればVBA考えるより早いです。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。Ce_faci様のやり方でできました。
しかし、実は私のほうの勘違いで、B列のほうはすべて同じ値ではなくて0か1のランダムな値だったのです。
その場合の方法を教えていただけないでしょうか。
重ね重ねよろしくお願いします。

お礼日時:2007/01/16 09:46

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