[[20171012203931]] 『VBA 同上というセルの上の値をコピーして置き換ax(774) ページの最後に飛ぶ

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

 

『VBA 同上というセルの上の値をコピーして置き換える』(774)

A列にデータがあり、同じデータが連続する場合は
同上と記入されているシートがあります。

同上の部分に、上の値が入ったデータをコピーし、
値のみのデータを作れればと考えています。

初心者の為、offsetやif構文がいまいち理解できていなく
どうすればいいか困っています。

お優しい方、教えていただければ幸いです。

(例)
〇A列
a1234
a1235
同上
同上
a1236
同上
a1237

同上の部分を上にある値のデータに置き換えたい

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


>if構文がいまいち理解できていなく

参考にしてください

 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.