電子書籍の厳選無料作品が豊富!

手間がかかるタイピングを簡単にさせるため、次のようか事ができないかと考えております。EXCELは中級クラスです。VBAなどを使う場合は、お手数ではございますが、超わかりやすくご回答頂ければ幸いです。

”シート1”に下記のような入力をすると、
”シート東京”には、東京の行だけがコピーされ、
”シート大阪”には、大阪の行だけがコピーされる。

販売 場所  

1月 東京   
1月 大阪  
1月 沖縄  
2月 東京  
2月 大阪  
2月 沖縄  

A 回答 (12件中11~12件)

とりあえず、VBAで作ってみました。


もっとスマートなのは他の方に任せます(^^ゞ
シートが10枚まで対応します。それ以上の場合は、
「10」のところを任意に数字に変えてください。
なお、前提条件として、
(A) データは「Sheet1」、そのほかは「東京」「大阪」・・・というシート名
(B)シート名の「東京」「大阪」・・とデータのB列にある「東京」「大阪」は同じ(空白など入れないで、合致すること)。
(C)シート「東京」などには1行目からデータを並べる。



Sub 分類()
Dim Sh(10) As String
Dim I As Integer
Dim R As Integer

I = 1
For Each WS In Worksheets・・・・(1)
Sh(I) = WS.Name
Sheets(Sh(I)).Activate
Range("A1").Activate・・・・・(2)
I = I + 1
If I > 10 Then Exit For
Next

Sheets("Sheet1").Activate・・・・(4)
R = 2
Cells(R, 2).Activate
Do Until Cells(R, 2).Value = ""・・(5)
For I = 1 To 10
If Sh(I) = Cells(R, 2).Value Then・・(6)
Rows(R).Select
Selection.Copy
Sheets(Sh(I)).Activate
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Activate・・(7)
Sheets("Sheet1").Activate
End If
Next
R = R + 1
Cells(R, 2).Activate
Loop
Range("A1").Activate
End Sub

一応解説しておくと、
(1)の部分は各シートの名前をShという変数に代入しています。これはあとで検索しやすくするためです。
さらにActivateメソッドで各シートに移り、A1セルにカーソルを移動してます(2)。(3)は変数Shが10までしか対応できないので、10以上は無視するために記述しています。
(4)からが本編で、Sheet1に移り、B2セルにカーソルを移動しています。
(5)はカーソルのあるセルの内容が空白になるまで繰り返すという意味です。
(6)で、Sh(すなわちシート名)とセルのデータが一致するかどうか判定して、一致したら、その行を選択して、COPYします。そして一致したShのシートに移り、ペーストします。次に備えカーソルを1つ下げておきます(7)。
ループを抜けたら、Rをひとつカウントアップして、次の行にうつります。

それほど難しくはないと思いますが、いかがでしょう?
    • good
    • 0

手動でやる方法としては、データ入力完了後、



1. オートフィルターで都市ごとのデータ抽出
2. 1.の結果をコピー
3. 各シートへ貼り付け

です。

これを自動化するためにはVBAでやるしかありませんが、比較的規模の大きいコードになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!