よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

[ 親記事をトピックトップへ ]

このトピックに書きこむ

■13438 / inTopicNo.1)  Re[3]: 行追加とコピー
  
□投稿者/ よねさん -(2020/01/17(Fri) 10:13:02)
    そうです。↓こんな感じです。
    Range("A" & i & ":AM" & i).Copy Range("A" & i + 1 & ":AM" & i + s_Row)

引用返信/返信 削除キー/
■13437 / inTopicNo.2)  Re[2]: 行追加とコピー
□投稿者/ sora -(2020/01/17(Fri) 10:02:31)
    A〜AMまで同じようにコピーしたいのですが
    どの部分をいじればよいですか?
    Range("A" & i & ":G" & i).Copy Range("A" & i + 1 & ":G" & i + s_Row)
    この部分でしょうか?
引用返信/返信 削除キー/
■13436 / inTopicNo.3)  Re[3]: 行追加とコピー
□投稿者/ よねさん -(2020/01/17(Fri) 09:26:34)
    行数が増えると、For〜Next で2行目までループしているのが無駄なので、
    G列で"済"など何か入力されている行までをループするようにしてみました。
    このような感じでいかがでしょうか。
    
    Sub test1()
     Dim i As Long
     Dim lastRow As Long, s_Row As Long
     Dim lastRow2 As Long
    
      lastRow = Cells(Rows.Count, 1).End(xlUp).Row
      lastRow2 = Cells(Rows.Count, 7).End(xlUp).Row
    
      For i = lastRow To lastRow2 Step -1
           If Cells(i, 4).Value > 1 And Cells(i, 7).Value <> "済" Then
                s_Row = Cells(i, 4).Value - 1
                Range("A" & i + 1 & ":A" & i + s_Row).EntireRow.Insert
                Range("G" & i).Value = "済"
                Range("A" & i & ":G" & i).Copy Range("A" & i + 1 & ":G" & i + s_Row)
           End If
      Next i
    
    End Sub
    

引用返信/返信 削除キー/
■13435 / inTopicNo.4)  Re[2]: 行追加とコピー
□投稿者/ sora -(2020/01/17(Fri) 09:14:45)
    ちなみに行を増やした場合にもこちらは対応できますか?
引用返信/返信 削除キー/
■13433 / inTopicNo.5)  Re[1]: 行追加とコピー
□投稿者/ sora -(2020/01/16(Thu) 11:41:10)
    2020/01/16(Thu) 11:41:43 編集(投稿者)
    2020/01/16(Thu) 11:41:40 編集(投稿者)
    2020/01/16(Thu) 11:41:38 編集(投稿者)

    出来ました!!
    ありがとうございます。
引用返信/返信 削除キー/
■13431 / inTopicNo.6)  Re[1]: 行追加とコピー
□投稿者/ よねさん -(2020/01/15(Wed) 09:16:37)
    2020/01/15(Wed) 12:19:06 編集(管理者)
    2020/01/15(Wed) 11:45:20 編集(管理者)

    こんな感じでしょうか?
    ただし、このコードは1度だけしか実行してはいけません。
    実行するたびに 挿入&コピーが増幅しますので、ご注意ください。

    または、For i = lastRow To 2 Step -1 の部分を実行するたびに適切な値に書き換えるとかの対処が必要です。

    Sub test1()
    Dim i As Long
    Dim lastRow As Long, s_Row As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = lastRow To 2 Step -1
    If Cells(i, 4).Value > 1 Then
    s_Row = Cells(i, 4).Value - 1
    Range("A" & i + 1 & ":A" & i + s_Row).EntireRow.Insert
    Range("A" & i & ":F" & i).Copy Range("A" & i + 1 & ":F" & i + s_Row)
    End If
    Next i

    End Sub
    --------
    複数回実行したもいいように、コードを実行して挿入&コピーをしたら
    G列にコピーしたら”済“と入力するように改変しました。
    G列に"済"が入力されていないと、挿入&コピー対象となります。
    これでどうでしょう。

    Sub test1()
    Dim i As Long
    Dim lastRow As Long, s_Row As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = lastRow To 2 Step -1
    If Cells(i, 4).Value > 1 And Cells(i, 7).Value <> "済" Then
    s_Row = Cells(i, 4).Value - 1
    Range("A" & i + 1 & ":A" & i + s_Row).EntireRow.Insert
    Range("G" & i).Value = "済"
    Range("A" & i & ":G" & i).Copy Range("A" & i + 1 & ":G" & i + s_Row)
    End If
    Next i

    End Sub

引用返信/返信 削除キー/
■13430 / inTopicNo.7)  行追加とコピー
□投稿者/ sora -(2020/01/14(Tue) 15:43:17)
    2020/01/14(Tue) 15:43:56 編集(投稿者)
    C列の商品数が1以上の時(4や2)行を挿入してコピーしたい
    
    
      A       B       C    D    E    F
    注文番号	商品番号	商品	注文数量 名前	ふりがな
    317104911	AH01-NT	a	1	a	a
    375504911	AH04-NT	b	1	b	b
    546104901	AH07-NT	c	1	c	c
    951704891	AH02-NT	d	4	d	d
    956404891	AH10-NT	e	2	e	e
    
    イメージ
    
     A       B       C    D    E    F
    注文番号	商品番号	商品	注文数量 名前	ふりがな
    317104911	AH01-NT	a	1	a	a
    375504911	AH04-NT	b	1	b	b
    546104901	AH07-NT	c	1	c	c
    951704891	AH02-NT	d	4	d	d
    951704891	AH02-NT	d	4	d	d
    951704891	AH02-NT	d	4	d	d
    951704891	AH02-NT	d	4	d	d
    956404891	AH10-NT	e	2	e	e
    956404891	AH10-NT	e	2	e	e
    

引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>
Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -