[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 同上というセルの上の値をコピーして置き換える』(774)
A列にデータがあり、同じデータが連続する場合は
同上と記入されているシートがあります。
同上の部分に、上の値が入ったデータをコピーし、
値のみのデータを作れればと考えています。
初心者の為、offsetやif構文がいまいち理解できていなく
どうすればいいか困っています。
お優しい方、教えていただければ幸いです。
(例)
〇A列
a1234
a1235
同上
同上
a1236
同上
a1237
同上の部分を上にある値のデータに置き換えたい
< 使用 Excel:Excel2010、使用 OS:Windows7 >
参考にしてください
Sub test() Dim i As Long
For i = 2 To 30 If Cells(i, "A").Value = "同上" Then Cells(i, "A").Value = Cells(i - 1, "A").Value End If Next
End Sub
(マナ) 2017/10/12(木) 21:01
いろいろ複雑に考えていましたが、すごくシンプルで驚きです。
1行目を見出しとして考えて、2〜30行目までが変数なので
30を大きな数にすれば、全部変換できるということですよね?
恐縮ですが、最終行が空白になるまで続け、空白の場合は
作業を終わるというような処理にする場合どのような形になるのか
参考までに教えていただくことできませんか?
(774) 2017/10/12(木) 21:23
横から失礼します。
アクロバティックな方法です。
「同上」を一旦ブランクにし、ブランクセルにジャンプ、一つ上のセル を参照する式を入力し値に置き換える、というものです。
選択セルを対象にしています。
※元からブランクセルがある場合は適していません。
Sub test() Dim r As Range Dim rr As Range Set r = Selection r.Replace What:="同上", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Set rr = r.SpecialCells(xlCellTypeBlanks) rr.FormulaR1C1 = "=R[-1]C" rr.Value = rr.Value Set r = Nothing Set rr = Nothing End Sub (カリーニン) 2017/10/12(木) 21:28
↑の私の式は不具合がありました。全てのブランクセルに同じものが入ってしまいます。 値化する部分をループしないといけませんでした。 (カリーニン) 2017/10/12(木) 21:33
「最終行 エクセル マクロ」などでネット検索してみてください。
参考になるコードは、簡単にみつかるでしょう。
(マナ) 2017/10/12(木) 21:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.