• ベストアンサー

Excel_VBAでこんなこと出来ますか?

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

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 >ヒントだけでも教えてく頂きたい ヒントは既に出てますのでシンプルなサンプルを。   表:  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 ----------------------------------------------- 以上です。  

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.3

No1 さんと同じ考え方で >任意の位置の文字を除いた(無視)した並び替えをす >る方法を考えています。 >4文字目を無視して A列にデータが入っていて、作業列を使用し、そこに =LEFT(A1,3)&MID(A1,5,LEN(A1)-4) または =REPLACE(A1,4,1,"") という式を入れて、その列を基準に並べ替え

すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

A列にデータが入っていて、データが7文字であると仮定すると、作業列を一列作って、そこに =LEFT(A1,3)&RIGHT(A1,3) という式を入れて、その列を基準に並べ替える、というのはいかがでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A