Excel VBA質問箱 IV

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

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


2078 / 13645 ツリー ←次へ | 前へ→

【70143】数字を文字に変更 ごん 11/10/17(月) 11:31 質問[未読]
【70147】Re:数字を文字に変更 UO3 11/10/17(月) 11:54 回答[未読]
【70153】Re:数字を文字に変更 ごん 11/10/17(月) 16:01 お礼[未読]

【70143】数字を文字に変更
質問  ごん  - 11/10/17(月) 11:31 -

引用なし
パスワード
   (アルファベットの並び替えの続きですが、投稿分けます)

C列3行目より下に数字が入っています。
0〜999の値になります。

3という数字をエクセルの書式の機能を使って、003と表示しているセルもあれば、023と文字を入力しているところもあれば、345と数字を入力しているセルもあります。

このC列をキーに並べ替えるために、このC列の値を、データーが入っている一番右の列の2つ右隣の列に数字として書き込みたいのですが、どのようなマクロで実現できるのでしょうか?

【70147】Re:数字を文字に変更
回答  UO3  - 11/10/17(月) 11:54 -

引用なし
パスワード
   ▼ごん さん:

既に設定して作業列のもう1つ右に新しい作業列ということですね。
その部分のみを回答してもいいのですが、もとの作業列やソート領域の指定、
作業列のクリア等々にも影響がでますので、老婆心かもしれませんが
あちらでアップしたSample3をベースに要件を加えてみました。
Sample3との差異には★印をつけてあります。

Sub SampleX()
  Dim myA As Range
  Dim lCell As Range
  Dim z As Long

  Application.ScreenUpdating = False

  With ActiveSheet.UsedRange
    Set lCell = .Cells(.Cells.Count).Offset(, 2)  '★
  End With

  Set myA = Range("A3", lCell)

  With myA.Columns(myA.Columns.Count - 1)      '★
    .Formula = "=LEN(B3)"
    .Value = .Value
  End With

  With myA.Columns(myA.Columns.Count)        '★
    .Value = myA.Columns("C").Value
  End With
  
  myA.Sort Key1:=lCell, Order1:=xlAscending, Header:=xlNo '★
 
  'Key2を変更 ★
  myA.Sort Key1:=Columns("A"), Order1:=xlAscending, _
        Key2:=lCell.Offset(, -1), Order2:=xlAscending, _
        Key3:=Columns("B"), Order3:=xlAscending, _
        Header:=xlNo
  
  lCell.Offset(, -1).Resize(, 2).EntireColumn.ClearContents '★
  Set myA = Nothing
  Set lCell = Nothing

  Application.ScreenUpdating = True

End Sub

【70153】Re:数字を文字に変更
お礼  ごん  - 11/10/17(月) 16:01 -

引用なし
パスワード
   ▼UO3 さん:
回答ありがとうございました。
ちゃんと作動しました。

老婆心大歓迎です。
(自分なりに出来るかもしれませんが、提示して頂いたコードは、私の知らない方法がたくさん含まれていて、勉強になりますので)

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