[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートへ転記』(春)
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.