Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5261 / 13644 ツリー ←次へ | 前へ→

【51816】同じ内容のセルを転記するには mame 07/10/5(金) 17:30 質問[未読]
【51817】Re:同じ内容のセルを転記するには じゅんじゅん 07/10/5(金) 18:26 発言[未読]
【51818】Re:同じ内容のセルを転記するには mame 07/10/5(金) 22:02 発言[未読]
【51820】Re:同じ内容のセルを転記するには じゅんじゅん 07/10/5(金) 22:55 発言[未読]
【51821】Re:同じ内容のセルを転記するには じゅんじゅん 07/10/5(金) 23:07 発言[未読]
【51836】Re:同じ内容のセルを転記するには mame 07/10/6(土) 21:15 発言[未読]
【51838】Re:同じ内容のセルを転記するには じゅんじゅん 07/10/6(土) 21:53 発言[未読]
【51893】Re:同じ内容のセルを転記するには mame 07/10/9(火) 20:19 お礼[未読]

【51816】同じ内容のセルを転記するには
質問  mame  - 07/10/5(金) 17:30 -

引用なし
パスワード
   こんにちは。

VBA初心者です。
よろしくお願いします。

 A列 B列 C列
 あ  1  a
 い  2  b
 う  3   c
 あ  4  d
 い  5  e
 う  6   f

というシートがあったとして、
A列に”あ”が入っていれば、その行のA列からC列までを別シートに
まとめたいんです。
この時 こちらから”あ”を指定【if cells(i,1)= "あ" then】するのではなく
(数が多いので指定しきれない)
自動的にA列の中から同じものを集めて別シートに
転記したいんです。

よろしくお願い致します。

【51817】Re:同じ内容のセルを転記するには
発言  じゅんじゅん  - 07/10/5(金) 18:26 -

引用なし
パスワード
   ▼mame さん:
> A列 B列 C列
> あ  1  a
> い  2  b
> う  3   c
> あ  4  d
> い  5  e
> う  6   f
>
>というシートがあったとして、
>A列に”あ”が入っていれば、その行のA列からC列までを別シートに
>まとめたいんです。
>この時 こちらから”あ”を指定【if cells(i,1)= "あ" then】するのではなく
>(数が多いので指定しきれない)
>自動的にA列の中から同じものを集めて別シートに
>転記したいんです。

>自動的にA列の中から同じものを集めて別シートに
”あ”と同じものを集めるには、”あ”という条件を与えるわけですから、
【指定するのではなく】とは?
単に「並び替えて同じ集まりを作りたい」と言う事とは違うのですか?

【51818】Re:同じ内容のセルを転記するには
発言  mame  - 07/10/5(金) 22:02 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>▼mame さん:
>> A列 B列 C列
>> あ  1  a
>> い  2  b
>> う  3   c
>> あ  4  d
>> い  5  e
>> う  6   f
>>
>>というシートがあったとして、
>>A列に”あ”が入っていれば、その行のA列からC列までを別シートに
>>まとめたいんです。
>>この時 こちらから”あ”を指定【if cells(i,1)= "あ" then】するのではなく
>>(数が多いので指定しきれない)
>>自動的にA列の中から同じものを集めて別シートに
>>転記したいんです。
>
>>自動的にA列の中から同じものを集めて別シートに
>”あ”と同じものを集めるには、”あ”という条件を与えるわけですから、
>【指定するのではなく】とは?
>単に「並び替えて同じ集まりを作りたい」と言う事とは違うのですか?

返信ありがとうございます。
うーん・・・
どういえばいいんでしょうか・・・・

イメージとしては、社名、請求額、請求書番号などがダーッと
書かれたリストがあって、各社ごとに分けてシートを作りたいって感じです。
社名は決まってなく毎回違いますので、コード内に入れ込む事が
難しいと思いまして・・・・。

説明がヘタクソですみません。。。。

【51820】Re:同じ内容のセルを転記するには
発言  じゅんじゅん  - 07/10/5(金) 22:55 -

引用なし
パスワード
   ▼mame さん:
>▼じゅんじゅん さん:
>>▼mame さん:
>返信ありがとうございます。
>うーん・・・
>どういえばいいんでしょうか・・・・
>
>イメージとしては、社名、請求額、請求書番号などがダーッと
>書かれたリストがあって、各社ごとに分けてシートを作りたいって感じです。
>社名は決まってなく毎回違いますので、コード内に入れ込む事が
>難しいと思いまして・・・・。
>
>説明がヘタクソですみません。。。。

Sheet1にデータがあって、A列(1行目は項目、2行目以下に社名)のデータ
毎にシート名(社名)を作成し、そのシートに社名毎のデータを転記する。
(同一のシート名が存在していたら、強制削除する)

Sub Test()
   Dim Dic As Object
   Dim key As Variant
   Dim sh1 As Worksheet
   Dim sh2 As Worksheet
   Dim Csh As Worksheet
   Dim r As Range

Application.ScreenUpdating = False

Set sh1 = Worksheets("Sheet1")
Set Dic = CreateObject("Scripting.Dictionary")

With sh1
   For Each r In .Range(.[A2], .Cells(Rows.Count, "A").End(xlUp))
     Dic(r.Value) = Empty
   Next
End With

For Each key In Dic.keys
   For Each Csh In Worksheets
     If key = Csh.Name Then
      Application.DisplayAlerts = False
      Csh.Delete
      Application.DisplayAlerts = True
     End If
   Next

   Worksheets.Add After:=Worksheets(Worksheets.Count)
   ActiveSheet.Name = key
   Set sh2 = Worksheets(key)

   With sh1
      .Range("A1").AutoFilter Field:=1, Criteria1:=key
      .Range("A1").CurrentRegion.Copy Destination:=Worksheets(key).Range("A1")
      .AutoFilterMode = False
   End With

Next

Set Dic = Nothing
Set sh1 = Nothing
Set sh2 = Nothing
Application.ScreenUpdating = True
End Sub

こう言った事でしょうか?

【51821】Re:同じ内容のセルを転記するには
発言  じゅんじゅん  - 07/10/5(金) 23:07 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>▼mame さん:
>>▼じゅんじゅん さん:
>
> For Each key In Dic.keys
>   For Each Csh In Worksheets
>     If key = Csh.Name Then
>      Application.DisplayAlerts = False
>      Csh.Delete
>      Application.DisplayAlerts = True
>     End If
>   Next

For Each key In Dic.keys

   On Error Resume Next
   Application.DisplayAlerts = False
   Worksheets(key).Delete
   Application.DisplayAlerts = True
   On Error GoTo 0

こっちの方がいいかな。

【51836】Re:同じ内容のセルを転記するには
発言  mame  - 07/10/6(土) 21:15 -

引用なし
パスワード
   ▼じゅんじゅん さん
ありがとうございます!
まさにその通りでございます(礼)
もし、よろしければコードの内容を詳しく教えてもらえませんか。
ど素人なもので・・・・。

【51838】Re:同じ内容のセルを転記するには
発言  じゅんじゅん  - 07/10/6(土) 21:53 -

引用なし
パスワード
   ▼mame さん:
>▼じゅんじゅん さん
>ありがとうございます!
>まさにその通りでございます(礼)
>もし、よろしければコードの内容を詳しく教えてもらえませんか。
>ど素人なもので・・・・。

私自身も使って覚えてきたもので詳しく理解はしてないのですが。
(昨年末からVBAを始めたところでして)

「重複しないリストを生成する」
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.html

「オートフィルタ(AutoFilterメソッド)でのデータ抽出」
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html
等を参考にしてます。
(ちょっと書き方は違いますが。)

【51893】Re:同じ内容のセルを転記するには
お礼  mame  - 07/10/9(火) 20:19 -

引用なし
パスワード
   ▼じゅんじゅん さん

ありがとうございます^^
参考にさせていただきます(礼)

5261 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free