[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ループのかけ方がよくわかりません』(ららら)
この様なデータを
A B C D E 1 取引先番号 りんご みかん バナナ ブドウ 2 5021 1 3 5021 4 4 5021 3 5 0354 6 6 0354 1 7 0354 5 8 2256 5 9 2256 5
この様な形に変えたいです
A B C D E 1 取引先番号 りんご みかん バナナ ブドウ 2 5021 1 4 3 3 0354 5 6 1 4 2256 5 5
データの量は月によって変動します。
自分で作れたのは以下までです
Dim a As Long 'アクティブセルの値をaに格納
Dim b As Long 'アクティブセルの一行下の値をbに格納
Dim j As Long 'アクティブセルの行番号を取得
Dim s As Long 'アクティブセルの列番号を取得
Range("A2").Select a = ActiveCell.Value j = ActiveCell.Row
ActiveCell.Offset(1, 0).Select b = ActiveCell.Value
If a = b Then ActiveCell.End(xlToRight).Select s = ActiveCell.Column Selection.Copy Cells(j, s).Select ActiveSheet.Paste Rows(j + 1).Delete shift:=xlUp
Else ActiveCell.Offset(1, 0).Select
End If
End Sub
これを実行すると最初の取引先番号は、何度が実行すると一行にまとめられるのですが、2件目以降がうまくできません。
どのようにループをかければいいのか、教えていただけないでしょうか。
また、マクロにはあまり詳しくないので、もっとスッキリとしたマクロの組み方があれば教えてください。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
どこかで見た処理だと思ったらこの関連でしょうか。 [[20140605101246]] 『データの形を変えて表示したい』(ららら) 関連質問があるときは、リンクされるとよいと思います。
上のやり方を基にしてコードを書くと、こんなようにもできると思います。
Sub サンプル() Dim 基準セル As Range Set 基準セル = Range("A2")
Dim 比較セル As Range Do While 基準セル.Value <> "" Set 比較セル = 基準セル.Offset(1, 0) If 基準セル.Value = 比較セル.Value Then With 比較セル.End(xlToRight) .Offset(-1, 0).Value = .Value End With 比較セル.EntireRow.Delete Else Set 基準セル = 基準セル.Offset(1, 0) End If Loop End Sub (Mook) 2014/07/15(火) 17:02
前回同様、早速返信を頂きありがとうございます。
やってみましたができました!
またまた、前回に続いて大変作業がしやすくなりました。
ありがとうございます。
内容もスッキリとしてわかりやすいです。
また、今後は関連する質問の場合はリンクを貼るように気を付けます。
(ららら) 2014/07/15(火) 17:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.