Excel VBA質問箱 IV

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

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


10003 / 13646 ツリー ←次へ | 前へ→

【24330】並べ替えについて りんりん 05/4/19(火) 16:32 質問[未読]
【24332】Re:並べ替えについて ウッシ 05/4/19(火) 16:46 回答[未読]
【24336】Re:並べ替えについて りんりん 05/4/19(火) 17:52 質問[未読]
【24342】Re:並べ替えについて ウッシ 05/4/19(火) 19:20 回答[未読]
【24344】Re:並べ替えについて Kein 05/4/19(火) 22:04 回答[未読]
【24353】Re:並べ替えについて りんりん 05/4/20(水) 9:39 お礼[未読]

【24330】並べ替えについて
質問  りんりん  - 05/4/19(火) 16:32 -

引用なし
パスワード
   並べ替えについて質問です。
以下のように完成品、部品、品名が入力された表があります
これを完成品を基準にして昇順で並べ替えたいのですが
普通に並べ替えすると完成品の品番のみが上に集まって
しまいます。
完成品にぶらさがっている部品、品名も一緒に並べ替えることは
マクロで可能でしょうか?
初心者でまったくわからないのでよろしくお願いします。


 A                B            C  
完成品              部品         品名
HGC8100-010010  HGC8100-010011     ハウジング
              HGC8100-010012     ハウジング
              HGC8100-010013     ハウジング
              HGC8100-010014     ハウジング
HGC8200-010010  HGC8200-010011      ハウジング
              HGC8200-010012     ハウジング
              HGC8200-010013     ハウジング
              HGC8200-010014     ハウジング
HGC8000-010010  HGC8000-010011      ハコ
              HGC8000-010012     ハコ
              HGC8000-010013     ハコ
              HGC8000-010014     ハコ

【24332】Re:並べ替えについて
回答  ウッシ  - 05/4/19(火) 16:46 -

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

IV列を作業列として使っています。

Sub test()
  With Range("B2", Range("B65536").End(xlUp))
    With .Offset(, 254)
      .Formula = "=IF(A2<>"""",A2,IV1)"
      .Copy
      .PasteSpecial xlValues
    End With
    .Offset(, -1).Resize(, 256) _
      .Sort .Offset(, 254).Cells(1), xlAscending, header:=xlNo
    .Offset(, 254).ClearContents
  End With
End Sub

【24336】Re:並べ替えについて
質問  りんりん  - 05/4/19(火) 17:52 -

引用なし
パスワード
   ウッシ さんこんにちは。
回答ありがとうございます。
教えていただいた通りのコードで試してみたのですが、
ソートのコードのところで
『Rangeクラスのsortプロパティを取得できません』という
エラーが出るのですがどこが悪いのでしょうか??

Sub test()

With Sheets("仕掛品一覧").Range("B2", Range("B65536").End(xlUp))
  With .Offset(, 254)
    .Formula = "=If(A2<>"""",A2,IV1)"
    .Copy
    .PasteSpecial xlValues
  End With
  .Offset(, -1).Resize(, 256).Sort.Offset(, 254).Cells(1).xlAscending ,header:=xlNo
  .Offset(, 254).ClearContents
 End With

End Sub

【24342】Re:並べ替えについて
回答  ウッシ  - 05/4/19(火) 19:20 -

引用なし
パスワード
   ▼りんりん さん:
>ウッシ さんこんにちは。
>回答ありがとうございます。
>教えていただいた通りのコードで試してみたのですが、
>ソートのコードのところで
>『Rangeクラスのsortプロパティを取得できません』という
>エラーが出るのですがどこが悪いのでしょうか??
>
>Sub test()
>
> With Sheets("仕掛品一覧").Range("B2", Range("B65536").End(xlUp))
>  With .Offset(, 254)
>    .Formula = "=If(A2<>"""",A2,IV1)"
>    .Copy
>    .PasteSpecial xlValues
>  End With
>  .Offset(, -1).Resize(, 256).Sort.Offset(, 254).Cells(1).xlAscending ,header:=xlNo
>  .Offset(, 254).ClearContents
> End With
>
>End Sub

こんばんは

「With Sheets("仕掛品一覧")」で修飾される全てのRangeに「.」を付けないとダメです。
あとは「,」が「.」になってたり、離れてないといけないところがくっついてたり・・・

Sub test1()

  With Sheets("仕掛品一覧")
    With .Range("B2", .Range("B65536").End(xlUp))
      With .Offset(, 254)
        .Formula = "=If(A2<>"""",A2,IV1)"
        .Copy
        .PasteSpecial xlValues
      End With
      .Offset(, -1).Resize(, 256) _
        .Sort .Offset(, 254).Cells(1), xlAscending, header:=xlNo
      .Offset(, 254).ClearContents
    End With
  End With

End Sub

です。

【24344】Re:並べ替えについて
回答  Kein  - 05/4/19(火) 22:04 -

引用なし
パスワード
   Sub MySort()
  Application.ScreenUpdating = False
  Range("B2", Range("B65536").End(xlUp)) _
  .Offset(, -1).SpecialCells(4).FormulaR1C1 = "=R[-1]C"
  Range("A1").CurrentRegion.Sort Key1:=Range("A1"), _
  Order1:=xlAscending, Header:=xlYes, Orientation:=xlSortColumns
  Range("A2", Range("A65536").End(xlUp)) _
  .SpecialCells(3).ClearContents
  Application.ScreenUpdating = True
End Sub

で、どうでしょーか ? SpecialCells メソッドで "該当するセルが見つからない"
というエラーの出る可能性については、考慮していません。あくまでUPされた表の
状態を想定しているだけですから、注意して下さい。

【24353】Re:並べ替えについて
お礼  りんりん  - 05/4/20(水) 9:39 -

引用なし
パスワード
   keinさん、ウッシさん回答ありがとうございます。
教えていただいたコードで試してみたところ
どちらもうまく動きました!
大変助かりました。ありがとうございます。
またよろしくお願いします!

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