[[20170607150510]] 『複数のシートから選択したものを別シートに移行し』(ぺい) ページの最後に飛ぶ

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

 

『複数のシートから選択したものを別シートに移行したい』(ぺい)

シート1

   A    B    C    D    F    G

1 【材料A】

2 ***1       ヶ

3 ***2       ヶ

4 ***3       ヶ

5 ***4       ヶ

6 【材料B】

7 ***10      ヶ

このようなシートがあり(上図参照)

種類を【  】で区切っており、例えばB2セルに10と記入したらシート2の方に

(下図参照)シート1のA2・B2・C2セルのデータとA1セルの【材料A】も反映される

シート2

   A    B    C    D    F    G

1 【材料A】

2 ***1 10    ヶ






そこから続けてシート1のB3セルに5と

記入したら(下図参照)シート2の方に続けて反映される

※【材料A】はそのまま継続、【材料A】の項目が無くなれば自動で消去

シート2

   A    B    C    D    F    G

1 【材料A】

2 ***1 10    ヶ

3 ***2 5     ヶ





この次にシート1のB7セルに2と記入したら

A3・B3・C3セルのデータとB6セル【材料B】シート2の方で下記のように

反映される

   A    B    C    D    F    G

1 【材料A】

2 ***1 10    ヶ

3 ***2 5     ヶ

4 【材料B】

5 ***7 10    ヶ



この状態でシート1のB4セルに3と入力した場合は

下図のように【材料B】と***7 10    ヶが1セルずれて反映される

シート2

   A    B    C    D    F    G

1 【材料A】

2 ***1 10    ヶ

3 ***2 5     ヶ

4 ***3 3     ヶ

5 【材料B】

6 ***7 10    ヶ


※【材料○】はA・Bだけではありまあせん複数あります。

エクセル学校内で検索してみたのですが見つけられませんでした。

乱筆悪文のためお見苦しい点も多いかと存じますが宜しくお願い致します。

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


何をどうしたいのか、さっぱり理解できません。また、貴方がどういう処理を考えていて、何に困っているのかも判らず、答えようがないです…。
やりたい事だけ書いてあって、この通りに動くコードを作ってくれ、という丸投げ依頼にも見えてしまい、本気で解読する気にもなりませんでした。すいません。
(???) 2017/06/07(水) 17:45

Private Sub Worksheet_Change(ByVal Target As Range)
'Sheet1のシートモジュール
    Dim dt() As Boolean, r As Range, c As Range, i As Long, flg As Boolean
    If Target.Count > 1 Then Exit Sub
    If Target.Column <> 2 Then Exit Sub
    Sheets("Sheet2").Cells.ClearContents
    Set r = Sheets("Sheet2").Range("A1:C1")
    ReDim dt(Range("A" & Rows.Count).End(xlUp).Row)
    For Each c In Intersect(UsedRange, Columns("A"))
        If Trim(c.Offset(, 2).Value) = "" Then
            If Not flg Then dt(temprow) = False
            temprow = c.Row
            dt(c.Row) = True
            flg = False
        End If
        If Trim(c.Offset(, 1).Value) <> "" Then dt(c.Row) = True: flg = True
    Next c
    If Not flg Then dt(temprow) = False
    For i = 0 To WorksheetFunction.CountA(Range("A:A"))
        If dt(i) = True Then
            r.Value = Range("A" & i).Resize(, 3).Value
            Set r = r.Offset(1)
        End If
    Next i
End Sub
(mm) 2017/06/07(水) 18:27

コメント返信:

[ 一覧(最新更新順) ]


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