• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クエリデータの並び替え)

クエリデータの並び替え方法と注意点

このQ&Aのポイント
  • クエリデータの並び替え方法について説明します。また、注意点も解説します。
  • カッコ内のデータを含むクエリデータを昇順降順で並び替える方法を詳しく解説します。
  • 並び替えたデータが正確に表示されない場合の対処方法について説明します。

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

  • ベストアンサー
回答No.4

なんか不思議ですね。 質問の状態でもマイナス符号のデータはまとまる筈。 もちろんまとまるのは符号部分まで、 文字列としての比較ですから後はバラバラのように感じるかも。 前日比%: Val(Left(Mid([前日比],InStr([前日比],"(")+1),InStr(Mid([前日比],InStr([前日比],"(")+2),")")-1)) のようにして、%記号も取り去りVal関数で数値型に変換してみたらどうなりますか? %記号が欲しい場合は、書式で設定してください。 Alt + Enter を押すなどしてプロパティシートを表示させます。 前日比%の書式を、0.00% に指定

1968masaru
質問者

お礼

ご回答ありがとうございます。 イメージ通りに、昇順降順並び替えが表現出来ました。

その他の回答 (3)

回答No.3

【補足】SetR()でLenH()を使っていました。 Private Function LenH(ByVal Text As String) As Integer   LenH = LenB(StrConv(Text, vbFromUnicode)) End Function

1968masaru
質問者

お礼

ご回答、補足ありがとうございます。 これを機に、この内容も学んでいます。

回答No.2

【訂正】 setR(CutStr(CutStr([前日比],"(",2),")",1),space(6)) AS [前日比%]  ↓ setR(CutStr(CutStr([前日比],"(",2),")",1),space(7)) AS [前日比%]

回答No.1

添付図のような結果を欲しているようですが・・・。 1、%抜きの数字として抜き出す。 2、ORDER BY 節を書く。 のどちらかです。私は、添付図のやり方ではなくて1にします。その場合は、ORDER BY 節で書いている式を[前日比%]とします。 SELECT   Test.ID,   Test.前日比,   setR(CutStr(CutStr([前日比],"(",2),")",1),space(6)) AS [前日比%] FROM Test ORDER BY VAL(replace(CutStr(CutStr([前日比],"(",2),")",1),"%","")); なお、使用している関数は次のようです。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function ? CutStr("AAA,BBB,CCC", ",", 1) AAA ? CutStr("AAA,BBB,CCC", ",", 2) BBB Public Function SetR(ByVal Text1 As String, ByVal Text2 As String) As String   Dim I As Integer   Dim J As Integer   Dim L As Integer   Dim M As Integer   Dim N As Integer   J = Len(Text1)   L = LenH(Text2)   For I = 1 To J     M = LenH(Mid$(Text1, 1, I))     If M > L Then       SetR = Left$(Text2, L - N) & Left$(Text1, I - 1)       Exit Function     Else       N = M     End If   Next I   SetR = Left$(Text2, L - N) & Text1 End Function