[[20110223145619]] 『空白セルに右セルをコピーする方法』(なお) ページの最後に飛ぶ

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

 

『空白セルに右セルをコピーする方法』(なお)

D行の空白セルだけに
右隣り(E行の一セルのみ)のデータをコピーできる様に
マクロを組みたいのですが、素人で解かりません。
誰か教えて下さい。


 「行」と「列」が混同されているようですが。

 このような感じで。

 Sub DtCopy()

    Dim DtRow As Long
    Dim maxRow As Long

    maxRow = Range("E" & Columns("A").Rows.Count).End(xlUp).Row

    For DtRow = 1 To maxRow
        If Cells(DtRow, "D") = "" Then
            Cells(DtRow, "D") = Cells(DtRow, "E")
        End If
    Next DtRow

 End Sub

 maxRowにはE列にデータのある最終行を求めています。
 D列の1行目からmaxRow行目までD列が空白であれば、E列の同じ行の
 値を代入しろ、というマクロです。

 (Yujin) 


Yujin様。ありがとうございます。
うまくいきました。バッチリでした。

セルを切り貼りするマクロを一生懸命組んでいたのですが、
全く考え方からして違ったのですね。
ってか、素朴に「列」と「行」を間違ってました・・・

本当にありがとうございました。


 ブランクセルにジャンプして作業する方法です。

 セルを選択してから実行します。

 Sub test()
  Dim r As Range
  Dim rr As Range
  Dim c As Range
   'セルが選択されていなかったら何もしない
   If TypeName(Selection) <> "Range" Then Exit Sub
   '2列以上選択されていたら何もしない
   If Selection.Columns.Count <> 1 Then Exit Sub
   Set r = Selection
   'ブランクセルを選択
   Set rr = r.SpecialCells(xlCellTypeBlanks)
   'ブランクセルが存在したら
   If Not rr Is Nothing Then
      '選択されたブランクセルに式を代入
      rr.FormulaR1C1 = "=RC[1]"
      '選択されたブランクセルの内容を値化
      For Each c In rr
       With c
        '式を値化
        .Value = .Value
        '右のセルをコピー
 '       .Offset(, 1).Copy
         '書式のみを貼付け
 '       c.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
          SkipBlanks:=False, Transpose:=False
       End With
      Next c
      Application.CutCopyMode = False
      Set rr = Nothing
   End If
   'セルを選択しなおす
   'r.Select
   '元の選択セル範囲の一番上のセルを選択
   r.Resize(1, 1).Select
   Set r = Nothing
 End Sub

 書式までコピーする必要がないなら

        '右のセルをコピー
 '       .Offset(, 1).Copy
         '書式のみを貼付け
 '       c.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
          SkipBlanks:=False, Transpose:=False

 の部分は不要です。

 手作業での場合です。

 セル範囲を選択
 ↓
 Ctrl+G
 ↓
 セル選択
 ↓
 空白セル
 ↓
 数式バーに
 =B1
 のように一番最初のブランクセルの右隣のセル
 を参照する式を入力
 ↓
 Ctrl + Enter

 でブランクセルのみに右隣のセルを参照する式
 を入力できます。
 ただ、これはあくまでも式になりますので値と
 するには一つづつ「形式を選択して貼付け」で
 値として貼り付けなおすか(飛び飛びのセルに対
 してはコピー→「形式を選択して貼付け」はでき
 ない)、マクロで
 ○.Value = ○.Value
 のようにするしかありません。

 (マクロマン)

マクロマン様 ありがとうございます。
返事が遅くなってすみません。
まだ、試してないのですが、チャレンジしてみようと思います。

コメント返信:

[ 一覧(最新更新順) ]


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