[[20140723121828]] 『VBA 隣のセルに値がある時だけ通し番号を振りたax(ぶどう) ページの最後に飛ぶ

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

 

『VBA 隣のセルに値がある時だけ通し番号を振りたい』(ぶどう)

<やりたい事>
「Sheet0」の指定した行のみを、「Sheet1」にコピーしてサマリーを作成する。
1. 1行目はタイトル行
2. 2行目からデータを貼り付ける
3. B列に値があるときは、A列にA2から通し番号を振る

1.と2.は何とかマクロを作成出来たのですが、3.が上手く出来なくて困っております。

VBA初心者ですが、ご教授頂けるとありがたいです。
宜しくお願いします。

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


 B列に値がない場合があるのでしょうか?

 いずれにしても2.ができたのなら、そのときにA列に番号をふればいいと思いますが、
 2.はどんなマクロを作りましたか?

(天邪鬼) 2014/07/23(水) 12:32


天邪鬼さん

コマンドボタンを利用して以下のマクロを作成した後に、通し番号の話が出てきました。

Private Sub CommandButton1_Click()

'初期設定(コピー元とコピー先のシート、コピーする列を設定)
Dim srcSheet As Worksheet
Dim dstSheet As Worksheet
Dim copyColumns As String
Set srcSheet = Sheets("Sheet0")
Set dstSheet = Sheets("Sheet1")
copyColumns = "E,G,L,M,O,Q,W,Y,AG,AH"

Application.ScreenUpdating = False

Dim srcRowTop As Long
Dim srcRowBottom As Long
Dim dstRowTop As Long
Dim dstColumnLeft As Integer
Dim cols() As String
Dim i As Integer
'コピー元の最初と最後の行を取得
srcRowTop = 1
srcRowBottom = srcSheet.Cells(srcSheet.Rows.Count, 1).End(xlUp).Row 'A列の最後のデータの行
If (srcRowBottom = 1) And (srcSheet.Cells(1, 1) = "") Then '最後の行が1行目で、実は1行目にデータが無い場合
Exit Sub 'コピー元データなし
End If
'コピー先の最初の行を設定
dstRowTop = 1 'B1の1
dstColumnLeft = 2 'B2のB(=2)
'コピーする列名を配列へ取得
cols = Split(copyColumns, ",")
'コピー開始
For i = 0 To UBound(cols)
srcSheet.Range(cols(i) & srcRowTop & ":" & cols(i) & srcRowBottom).Copy Destination:=dstSheet.Cells(dstRowTop, i + dstColumnLeft)
Next

Application.ScreenUpdating = True

End Sub
(ぶどう) 2014/07/23(水) 14:04


 コードの中身は良く見ていませんが、dstSheetの2行目から下に、
 B列に値があればA列に連番をつけるだけならこんなのでよさそう。

    Dim n As Long
    n = 1    'nは連番の最初の値

    With dstSheet
        For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
            If .Cells(i, "B").Value <> "" Then
                .Cells(i, "A").Value = n
                n = n + 1
            End If
        Next i
    End With

(天邪鬼) 2014/07/23(水) 14:57


天邪鬼さん

If .Cells(i, "B").Value <> "" Then

                .Cells(i, "A").Value = n

n-1で、連番にしていく発想にたどり着けずに
行番号-1でカウントして・・・と偏ったアイディアに捕らわれていました。

やりたい事が出来る為の色んな発想とアプローチが出来るようになって
VBAもっと使いこなしたいです!

本当にありがとうございました。
(ぶどう) 2014/07/23(水) 15:49


コメント返信:

[ 一覧(最新更新順) ]


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