- ベストアンサー
クエリデータの並び替え方法と注意点
- クエリデータの並び替え方法について説明します。また、注意点も解説します。
- カッコ内のデータを含むクエリデータを昇順降順で並び替える方法を詳しく解説します。
- 並び替えたデータが正確に表示されない場合の対処方法について説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
なんか不思議ですね。 質問の状態でもマイナス符号のデータはまとまる筈。 もちろんまとまるのは符号部分まで、 文字列としての比較ですから後はバラバラのように感じるかも。 前日比%: Val(Left(Mid([前日比],InStr([前日比],"(")+1),InStr(Mid([前日比],InStr([前日比],"(")+2),")")-1)) のようにして、%記号も取り去りVal関数で数値型に変換してみたらどうなりますか? %記号が欲しい場合は、書式で設定してください。 Alt + Enter を押すなどしてプロパティシートを表示させます。 前日比%の書式を、0.00% に指定
その他の回答 (3)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】SetR()でLenH()を使っていました。 Private Function LenH(ByVal Text As String) As Integer LenH = LenB(StrConv(Text, vbFromUnicode)) End Function
お礼
ご回答、補足ありがとうございます。 これを機に、この内容も学んでいます。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【訂正】 setR(CutStr(CutStr([前日比],"(",2),")",1),space(6)) AS [前日比%] ↓ setR(CutStr(CutStr([前日比],"(",2),")",1),space(7)) AS [前日比%]
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
添付図のような結果を欲しているようですが・・・。 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
お礼
ご回答ありがとうございます。 イメージ通りに、昇順降順並び替えが表現出来ました。