[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白セルに右セルをコピーする方法』(なお)
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)
セルを切り貼りするマクロを一生懸命組んでいたのですが、
全く考え方からして違ったのですね。
ってか、素朴に「列」と「行」を間違ってました・・・
本当にありがとうございました。
ブランクセルにジャンプして作業する方法です。
セルを選択してから実行します。
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.