質問番号:1418054103

ExcelのA-AY列において、同一コードを持つ行を結合させたいです。ただ、P列からT列は除外し、同一コードの行の結合がAY列まで終了次第、直下に1行追加→P-T列は追加された行の各セルに、数値の合計を計算。→その動作を1500行ぐらい繰り返したいのですが。

そんなマクロって、可能でしょうか?
今、D列に、図のようなデータが並んでおります。

(1)まず、100、200、300、400…とありますが、それぞれ同じデータがセルにあれば1つに結合します。
(2)そしてそれを水平展開し、他の列もD列と同じように結合していきます。(P-T列を除く)
1つのコードに対応する結合データが、AYまでの全ての列で展開できましたら。
(3)1行挿入し、P-T列のデータをこの http://f.st-hatena.com/images/fotolife/m/moon-fondu/20141209/20141209005013.jpg?1418053841 ように、隣接する結合セルの範囲毎に集計。

(1)に戻り、1500行の所まで繰り返す…といった処理をマクロで行いたいのですが。

もし、複雑になりすぎるようでしたら、結合→1行挿入の繰り返しだけでも構いません。
サンプルファイルはこちら http://xfs.jp/LMPmT に置きました。
お力添えをいただければ幸いです。よろしくお願い致します。
http://q.hatena.ne.jp/images/question/1418054/1418054103.jpg

質問内容(セルの結合部分)がイマイチ不明な為、一部の列のみを結合したソースコードを書いてみた。
(他の列を結合させたい場合は、結合させたい列分だけコードを追加すればOK)

Option Explicit

Sub main()

Dim lp As Long              ' カウンタ
Dim LastRow As Integer      ' 最終行
Dim RowCount As Long        ' 結合・合計するセル行数

    ' セルマージ時に出るメッセージをブロック
    Application.DisplayAlerts = False

    ' サンプルシートをコピー
    If Worksheets.count = 1 Then
        Worksheets(1).Copy After:=Sheets(1)
    End If

    RowCount = 1                            ' 結合・合計行カウントセット

    ' コピーしたシートで処理
    With Worksheets(2)
        LastRow = .Cells(Rows.count, 1).End(xlUp).Row + 1   ' 最終行
        lp = 2                             ' 1行目は見出し
        
        ' 最終行まで処理
        Do
            ' D列セルと直後のD列セルを比較。 違っていたら合計用の行挿入及び合計をセルにセット
            If .Range("D" & lp) <> .Range("D" & lp + 1) Then

                ' 合計行挿入
                .Range(lp + 1 & ":" & lp + 1).Insert

                ' P列にセル行数、Q〜T列に合計をセット
                .Range("P" & lp + 1) = RowCount
                .Range("Q" & lp + 1) = WorksheetFunction.Sum(.Range("Q" & lp - RowCount + 1 & ":" & "Q" & lp))
                .Range("R" & lp + 1) = WorksheetFunction.Sum(.Range("R" & lp - RowCount + 1 & ":" & "R" & lp))
                .Range("S" & lp + 1) = WorksheetFunction.Sum(.Range("S" & lp - RowCount + 1 & ":" & "S" & lp))
                .Range("T" & lp + 1) = WorksheetFunction.Sum(.Range("T" & lp - RowCount + 1 & ":" & "T" & lp))
                .Range("P" & lp + 1 & ":" & "T" & lp + 1).Font.Color = vbRed

                ' セルの結合(とりあえずB列とD列のみ C列とE列のセルにcountif関数が入っている為、セル結合後計算結果が変わる)
                .Range("B" & lp - RowCount + 1 & ":" & "B" & lp).Merge
                .Range("D" & lp - RowCount + 1 & ":" & "D" & lp).Merge

                LastRow = LastRow + 1       ' 合計行(1行)を追加
                lp = lp + 2                 ' 合計行+次行移動
                RowCount = 1                ' 結合・合計行カウントセット
            Else
                RowCount = RowCount + 1     ' 結合・合計行カウントアップ
                lp = lp + 1                 ' 次行移動
            End If
        Loop While lp + 1 <= LastRow
    End With
End Sub

質問番号:1416819276

Excelにて指定した範囲のデータをコピーし、起点のセルから3行置きに挿入していきたいです。
今、添付の画像のようなデータがあります。
5行目から20行目のデータを、関数も含めてコピーしまして。
それを、23行目の真下、26行目、29行目、32行目、35行目の真下・・・と、23行目を起点に、3行置きにコピーしたデータを挿入していきたいのです。
そしてその処理を5万行ほど行いたいのですが。
何かこれを実現するマクロ等、ご存知でしたらお教えいただけないでしょうか。
サンプルファイルもこちら http://xfs.jp/S92fHS に置きました。
お手数ですがどなたかよろしくお願い致します。

http://q.hatena.ne.jp/images/question/1416819/1416819276.png

Option Explicit

Sub main()

Dim LastRow As Long
Dim LoopCount As Long
Dim InsertRow As Long
Dim lp As Long

	If Worksheets.Count = 1 Then
		Worksheets("Sheet1").Copy After:=Worksheets("Sheet1")
		Worksheets(2).Name = "Sheet2"
	End If

	With Worksheets(2)
		LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
		LoopCount = Application.RoundUp((LastRow - 20) / 3, 0)
		InsertRow = 24

		For lp = 1 To LoopCount
			.Range("5:20").Copy
			.Range(InsertRow & ":" & InsertRow + 16).Insert
			InsertRow = InsertRow + 19
		Next lp
	End With

End Sub

質問番号:1416654240

特定のキーワードに一致したら、そのキーワードのある行と、そのキーワードから上に2行を含め、合計3行をSheet2に移動させたい。 今、セルE13に「AAAあいうえおBBB」と入力されております。 また、セルE71には「CCCあいうえおDDD」と入力されております。 この状態におきまして。 E列にもし「あいうえお」とある文字列が含まれていた場合、その文字列を含む行と、その行のちょうど真上の2行、合わせて3行を、コピーか切り取りして、Sheet2にどんどん移動させていきたいのです。 そのような関数やマクロ等ありましたら、お教えいただけないでしょうか。 サンプルファイルはこちら http://xfs.jp/sFV2I7 に置きました。 よろしくお願い致します。

Option Explicit

Sub main()

Dim LastRow As Long
Dim CopyRow As Long
Dim lp As Long

	Worksheets(2).Cells.Clear
	LastRow = Me.Range("E" & Rows.Count).End(xlUp).Row
	CopyRow = 1

	For lp = 3 To LastRow
		If InStr(Range("E" & lp), "あいうえお") > 0 Then
			Me.Range(lp - 2 & ":" & lp).Copy
			Worksheets(2).Range(CopyRow & ":" & CopyRow + 2).PasteSpecial
			CopyRow = CopyRow + 3
		End If
	Next lp

End Sub

2012-11-02 のつぶやき

  • 20:18  そういえば、来年度の県職員採用試験(非常勤)の申込みをしてなかった。 今はネットでできるみたいだからこの週末申込みをしておこう。
  • 20:15  isogayaさんは自分で物事を探す力を身に付けるべきだと思う。何でもアウトソースで解決しようとする人に思考法は必要? RT @ken3memo: 思考法の本。私も知りたい。 / “思考法についての本を探しています- 人力検索はてなhttp://t.co/Ufy0SeSE
  • 20:10  今年も実家の年賀状はこのソフトで作る予定。(私はウェブポで^^;) / “はがきデザインキット|日本郵便http://t.co/rjt5ie3R

Powered by twtr2src

2012-10-31 のつぶやき

  • 20:11  退勤時に車にぶつかった(自宅まで100mの辺り) 身体に異常は全く無し。車にぶつかったカバンに入れていた水筒2本も全く凹み無し。一応相手方の名前と電話番号と車のナンバーを控えたけど、身体と持ち物に異常が無いから慰謝料は多分0円。

Powered by twtr2src

2012-10-30 のつぶやき

  • 20:29  私が子供の頃(今から30年前)のボーリング場は手書きが普通。学生時代によく通った高野スターレーン(今のカナート洛北)も手書きだった。それにしても、壁にスコアを透写するってのは懐かしいなあ / “@niftyデイリーポータルZ:手書き…” http://t.co/PQylzouB

Powered by twtr2src

2012-10-28 のつぶやき

  • 23:55  あ〜あ、今までず〜と思っていたけど、云えなかった人力検索廃止論をハイクに投稿しちゃった。 (と云ってもヘタレなので自身のIDページで) こんな過激な事を投稿しても読む人は殆どいないからいいか^^; http://t.co/W8aabNfT

Powered by twtr2src