プロが教える店舗&オフィスのセキュリティ対策術

エクセルの標準の機能として、データ-並び替えで、選択範囲の昇順、降順の並び替えが出来ます。
しかし、優先されるキーとしては、セル内のデータ全てを対照とされてしましますが、セル内の文字列から任意の位置の文字を除いた(無視)した並び替えをする方法を考えています。何か?いい方法が無いでしょうか?ヒントだけでも教えてく頂きたいのですが宜しくお願い致します。
例:
H03W001
H03E003
H03S002
H03N004
を昇順でソートすると
H03E003
H03N004
H03S002
H03W001
の順で並び替えらてれてしまいます。
で、4文字目を無視して
H03W001
H03S002
H03E003
H03N004
のように並び替えたいのですが・・・?
このキーに付属するデータもありますので、基本的には、セルの選択範囲(複数列)もしくは、行単位の並び替えを望んでいます。
宜しくお願い致します。

A 回答 (3件)

こんにちは。



>ヒントだけでも教えてく頂きたい

ヒントは既に出てますのでシンプルなサンプルを。


  表:  A~D列
見出し: 一行目(A1:D1)
データ: 二行目から
作業列: E列(A列の4文字目を省いた値)
SortKey: E列
 
----------------------------------------------
Sub Test()

 Dim R As Long
 Dim LastRow As Long
 Dim myRange As Range

 LastRow = Range("A65536").End(xlUp).Row

 For R = 2 To LastRow
   Cells(R, "E").Value = Left(Cells(R, "A"), 3) & Mid(Cells(R, "A"), 5, 3)
 Next R

 Set myRange = Range("A2:E" & LastRow)

 myRange.Sort Key1:=Range("E2"), Order1:=xlAscending, _
    Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom, SortMethod:=xlPinYin

 Columns("E:E").ClearContents

End Sub
-----------------------------------------------

以上です。
 
    • good
    • 0

No1 さんと同じ考え方で



>任意の位置の文字を除いた(無視)した並び替えをす
>る方法を考えています。

>4文字目を無視して
A列にデータが入っていて、作業列を使用し、そこに
=LEFT(A1,3)&MID(A1,5,LEN(A1)-4)
または
=REPLACE(A1,4,1,"")
という式を入れて、その列を基準に並べ替え
    • good
    • 0

A列にデータが入っていて、データが7文字であると仮定すると、作業列を一列作って、そこに


=LEFT(A1,3)&RIGHT(A1,3)
という式を入れて、その列を基準に並べ替える、というのはいかがでしょうか。
    • good
    • 0

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