• ベストアンサー

桁数が混在する並び替えの方法

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 マクロでしたら、以下のようなものを考えてみました。 ただし、こちらの思惑とは違う数字の並びですと、うまくいかない可能性があります。 それは、4桁の数字がある場合です。もちろん、以下の正規表現の「パターン」の部分を修正すれば可能になります。 結果は、このようになります。 「Const DIST As Integer = 2 '右にいくつセルを離すか」の ところを2にしてありますので、A列に数値がある場合は、C列に出力されます。 もちろん、ユーザー定義関数のTriFigs を単独で使用しても、出力されますが、数式ですから、一旦、値貼り付けをしないと並べ替えは出来ません。 004-000-000 004-003-005 004-025-002 026-013-006 026-013-021 100-000-000 226-008-009 226-015-031 標準モジュールに貼り付けて、SortText を実行してください。 '------------------------------------------ Sub SortText() Dim c As Variant Dim i As Long Const DIST As Integer = 2 '右にいくつセルを離すか Application.ScreenUpdating = False '範囲 A1 ~データ範囲まで For Each c In Range("A1", Range("A" & Rows.Count).End(xlUp))  If IsNumeric(Replace(c.Value, "-", "")) Then   c.Offset(, DIST).Value = TriFigs(c.Value)   i = i + 1  End If Next c  Application.ScreenUpdating = True  MsgBox i & "セル、変換を完成しました。", 64 End Sub Function TriFigs(ByVal strText As String)   Dim Matches As MatchCollection   Dim Match As Match   Dim i As Integer   Dim a(2) As Integer   Dim buf As String   If strText = "" Then Exit Function   With CreateObject("VBscript.RegExp")     .Global = False     'パターン     .Pattern = "(\d{1,3})\-*(\d{1,3})*\-*(\d{1,3})*"     If .test(strText) Then       Set Matches = .Execute(strText)       Set Match = Matches.Item(0)       For i = 0 To 2         a(i) = Match.SubMatches(i)       Next       buf = Format(a(0), "000") & "-" & Format(a(1), "000") & "-" & Format(a(2), "000")     Else       buf = strText     End If     TriFigs = buf   End With End Function

hig1971122
質問者

お礼

ご協力いただきありがとうございます。質問してから、雨のせいもありかぜでダウンしてました。お礼が遅れ大変失礼いたしました。マクロは まったくわかりませんがせっかくお考えいただきました回答につきましては、意味がわかるくらいはがんばってみたいと思います。 今日から勉強させていただきます、どうもありがとうございました。

関連するQ&A

  • 桁数の統一と不要な文字の削除の仕方

    桁数の統一と不要な文字の削除の仕方 数字の後に「-(ハイフン)1」や「-(ハイフン)2」が入力されている数字があり、 「-」以下の数字を表示させず、尚且つ数字の桁数(6桁)を統一する方法を探しています。 <例> 最初の数字       処理後 11111-1    →   011111 11111-2    →   011111 222222     →   222222 222222-1    →   222222 当初「-1」、「-2」を置換で削除した後、ユーザー定義を「000000」にしていました。 ただ、置換処理が手間な為、関数等で簡単に処理できればと考えています。 宜しくお願い致します。

  • データの桁数を揃える関数をご教示下さい。

    データの桁数を揃える関数をご教示下さい。 セルの内容自体を同じ桁数の文字列としたいです。 また、桁数を揃える場合に、桁数の少ない場合には、 末尾に0を追加し、桁数を揃えたいです。 ex) 10桁と11桁と12桁の数字が混在 ⇒12桁に統一 120004561234(12)⇒120004561234(そのまま) 12000457131(11)⇒1200045713100(末尾に0を追加) 1200000562(10)⇒120000056200(末尾に00を追加) 以上、ご回答をよろしくお願いします。

  • EXCELの関数でデータの桁数を揃える

    桁数が1桁と2桁の混在したデータがあります。 (0,1,10,22,3,5) 機械的に入るデータなので結果を桁数を揃えたいと思っています。 (00,01,10,22,03,05) 関数などを組み合わせて桁数を揃えることは可能でしょうか?

  • 有効数字の桁数

    有効数字がよくわからなくて調べていたら、 こんな例がありました。 有効数字3桁の例 31400 3.14 538 5.38×10^2 3.00×10^-5 ←これも3桁です なぜこれらは有効数字が3桁なのですか? どうやって桁数を判断するのかわかりません。 教えてください。よろしくお願いします。

  • EXCELの桁数の変更を教えてください。

    顧客情報を2つのシートで管理しており、一つのシートのみに、 顧客番号をふっているので、もう一つのシートにも、その顧客番号をvlookupでひっぱろうとしたのですが、電話番号の下1桁が違っていたりして、マッチングができませんでした。 で、マッチングをさせるために、下2桁を切り落とし、桁数を変えることはかのうでしょうか。電話番号の下2けたを落としてvlookで引っ張れば、適合するものが多くなるように思います。 たとえば、0120-12-1234とかりに番号があった場合、ハイフンをトリムして、120121234とおきかえて、下ふたけたをきりおとして、1201212と9ケタから7桁の数字にする方法です。 よろしくお願いいたします。

  • エクセルでの並び替えについて

    住所録で都道府県順に並び替えるたにデーター 並び替えを活用すると下記の順番になります。(あいうえ順である。)    1番に京都 2番に神戸 3番に奈良 4番に和歌山 並び替えのオプション以外の方法で並び替える方法は、ありませんか。 (自分の好きな順に) (例)1番に奈良 2番に和歌山 3番に神戸 4番に京都の順に変更できませんか。

  • EXCELの置換 方法

    前回も似たような質問をさせていただいたのですが、 また似たような処理が出てきてしまったので質問させてください!! もしお分かりになる方がいらっしゃいましたらアドバイスいただけると嬉しいです。 よろしくお願いします!! コード番号の一括置換えをするにはどうすれば良いのか教えてください。!! <例> 00000X0-0 00111T0-1 00200S0-0 00003K0-0    ・    ・    ・    ・ 上記のような数字5桁/英字1文字/数字1桁/ハイフン/数字1桁 で表記されるコード番号があります。 このコード番号を数字3桁/英字1文字/数字2桁/ハイフン/数字2桁 で一括置換えしたいのですが、それは可能でしょうか? <例> 000X00-00 111T00-01 200S00-00 003K00-00 *英字の次の数字とハイフンの次の数字は“0”が挿入されます。 (下線の箇所です。) コード番号の数が600件程あるので、一括置換えができると とても時間短縮になるのですが、、、。 置換えでなく、他の方法で変換が出来るのでしたらそちらも 教えて頂ければと思います。 (難しいマクロとかはやったことがないのでできましたら関数の応用などで 出来るやり方を教えて頂ければ有難いです。) 宜しくご指導お願いします。!!

  • 有効桁数について

    ある数値を5回測定したとします A 5.039 B 5.075 C 5.092 D 5.064 E 5.058 有効桁数はすべて4桁ですよね? 次にA~Eの平均を取ると (A+B+C+D+E)/5=5.0656 と関数電卓で結果がでますが、4桁に丸めて5.066とすれば有効桁数の扱い方としては問題ないですか? そしてA~Eの平均の2乗をするときは、上記の平均を有効桁数4桁に丸めた5.066を2乗して (5.066)^2=25.664356 となり、そして5.066の有効桁数4桁に合わして25.66とすればいいのでしょうか? それとも平均の値を4桁に丸める前の電卓で出た値のまま2乗した後、最終的に4桁に丸めるのがいいのでしょうか?この数値だとどちらでやっても4桁にした値は変わりませんが・・・ 有効桁数の扱い方で問題があったら教えてください、また平均の2乗を求めるときはどちらが正しいのでしょうか? (平均の値の2乗は平均×平均なのだから平均の値を4桁にせず5桁として計算すると平均の2乗は有効桁数5桁と考えるので、やはり正しく平均の値を測定値の有効桁数4桁に丸めて出した平均の値を2乗する方が正しいですかね・・・)    また、上記の平均の計算をしたときのよな、「5」などの数字の有効桁数は何桁ですか?1桁なんでしょうか?もし1桁なら割り算をしているので有効桁数はいちばん桁数の少ないものに合わせるので有効桁数1となると平均の値が「5」となりおかしいとおもうんですが・・・ 上記の平均を取ったときの「5」や、測定回数の数値や、測定していない数で100で割れと書いてあったりしたときは、それらの数字の桁数も考えなければならないんでしょうか? 読みづらい文章かもしれませんが、ご回答待っています。

  • 有意桁数、有効桁数について

    有意桁数というものがあって、それが公に認知されている(出所がJISとかその他の公知規格)ものなのか、また有効桁数との関係等を悩んでいます。どなたかそちら方面に詳しい方がいらっしゃいましたら是非教えてください。お願いいたします。 有意桁数 ・測定値に小数点が含まれている場合、または10のべき乗で示されている場合はべき乗以外のすべての桁を有意桁数とする。 例:0.001ー有意桁数3、1.01ー有意桁数3、3×10⁴-有意桁数1、1.25×10⁵ ー有意桁数3 ・べき乗で示されていない自然数の場合で数値の後ろにゼロがある場合は、ゼロを省いた上位の数字の桁数を有意桁数とするが、1桁となる場合は、”2桁”とみなす(最低でも2桁とする)。 例;5000ー有意桁数2、3150ー有意桁数3、10ー有意桁数2、201ー有意桁数3 ・測定値のToleranceは、有意桁の最下位の1つ下の位で四捨五入する値とする。

  • エクセル関数で桁数指定し数値を比較したいが

    エクセル関数で桁数指定などあるのでしょうか? 例えば 桁数を指定し一致した数値を取り出したいが・・どうすればよいでしょうか? 桁数は1桁~6桁です。 「例」123456の数字があります。 6桁全て一致したら○ 下5桁一致したら○ 下4桁一致したら○ 下3桁一致したら○ ・・・・と言う具合にエクセルで組みたいのです。よろしくお願いします。