[[20120421140129]] 『別シートへ転記』(春) ページの最後に飛ぶ

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

 

『別シートへ転記』(春)

 Sheet1のデータをSheet2に転記したいのですが、教えてください。
 どちらのシートも3行目題名,4行目からデータ入力されています。

 (Sheet1)
  G列(品名)           I列(数量)
  11-プリンタ          0    ←転記せず
  15-プリンタ          10
  20-プリンタ          ▲5
  25-プリンタ          空白  ←転記せず
  32-ナビ           90

 ・Sheet1のI列の数量が0以外の場合、
   Sheet2のH列に品名,J列に数量を転記していきたいです。

 (Sheet2)
  H列(品名)        J列(数量)
 15-プリンタ          10
  20-プリンタ          ▲5
  32-ナビ           90

 宜しくお願いします。

    


転記する条件は推測しないといけないの?
(みやほりん)

 みやほりん様

 すいません。。ぬけてました。。
 転記する条件は、Sheet1にあるA列登録番号がなくなるまでです。
 宜しくお願いします。

 (春)

★転記項目の見出しが元のリストと一致していれば、という
条件付ですが、一般操作ではフィルタオプションでの転記が
適していると思います。

私のHPの記事ですが、参考までに。
http://miyahorinn.fc2web.com/schooltxt/filta10.html

別のシートに転記するにはいくつかのコツの組合せが必要ですが、
オートフィルタを設定できるようなリストであれば、可能です。
http://miyahorinn.fc2web.com/schooltxt/filta14.html
http://miyahorinn.fc2web.com/schooltxt/filta16.html
上記二つの方法の併せ技で、
条件の数式を
=Sheet1!H4<>0
と指定して抽出でした。

ただ、自動的に、というわけにも行きませんので、この抽出手順を
マクロ記録してマクロを実行、またはボタン登録や、イベントマクロでの自動化が
考えられます。

★列の順番が違う場合、関数的に処理する方法もあります。
ちょっと計算の原理が良く分かっていないとカスタマイズが難しい式かもしれませんが、

Sheet2のH4に以下の式。

=IF(COUNTIF(Sheet1!$H$4:$H$10,">0")+COUNTIF(Sheet1!$H$4:$H$10,"<0")<ROW($A1),"",INDEX(Sheet1!G$4:G$10,SMALL(INDEX((Sheet1!$H$4:$H$10=0)*9^9+ROW($A$1:$A$7),),ROW($A1))))

$H$4:$H$10が抽出条件とする範囲、G$4:G$10が抽出される範囲をあらわします。
列の並びが同じ順番で連続していれば、コピー貼り付けでいけると思います。
$1:$7をリストの行数と同じになるように、拡張してください。

ただし、対象範囲が大きいと再計算に時間がかかるかもしれません。
【関連ログ】
[[20100120171452]] 『エクセルで顧客の未納者一覧を作成したい』(ぶる)
(みやほりん)

[追記]
検証ミスがあったので修正しました。2012/4/21 18:20


 みやほりん様
 すみません、私の知識不足で申し訳ないのですが、
 下記のようなマクロで教えていただけたらありがたいです。

 Sub Sheet1()

    With Worksheets("Sheet1")
    Dim i As Long
    i = 4
    Do While Cells(i, 1) <> ""

        If Sheet1のI列が0以外だったら、Sheet2のHに品名,J列に数量を記載していきたい

        End If
            i = i + 1
        Loop    
    End With   
 End Sub

 大変申し訳ないです。宜しくお願いします。
 (春)

 こんなのでは?

 Option Explicit

 Public Sub Test()

    Dim i As Long
    Dim j As Long

    With Worksheets("Sheet1")
        i = 4
        j = 2 '出力行初期値
        Do While .Cells(i, 1) <> ""
            'If Sheet1のI列が0以外だったら、Sheet2のHに品名,J列に数量を記載していきたい
            If .Cells(i, "I").Value <> Empty Then
                Worksheets("Sheet2").Cells(j, "H").Value = .Cells(i, "G").Value
                Worksheets("Sheet2").Cells(j, "J").Value = .Cells(i, "I").Value
                j = j + 1
            End If
            i = i + 1
        Loop
    End With

 End Sub

 (Bun)


 Sub haru()
     Dim C As Range, myRng As Range
     With ThisWorkbook.Worksheets("Sheet1")
         Set C = .Cells(.Rows.Count, 1).End(xlUp)
         Set myRng = Range(.Cells(4, 1), C)
         Set C = Nothing
     End With
     For Each C In myRng
         If C.Cells(1, 9).Value = "" Or C.Cells(1, 9).Value = 0 Then
             Rem Do Nothing
         Else
             With ThisWorkbook.Worksheets("Sheet2")
                 .Cells(Rows.Count, 8).End(xlUp).Offset(1, 0).Value = C.Cells(1, 7).Value
                 .Cells(Rows.Count, 10).End(xlUp).Offset(1, 0).Value = C.Cells(1, 9).Value
             End With
         End If
     Next C
     Set myRng = Nothing
 End Sub

こんな感じ?
(みやほりん)


 Bun様 みやほりん様
 ありがとうございます。
 起動しました。
 (春)

コメント返信:

[ 一覧(最新更新順) ]


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