123456123789が1232 4561 7891のように分けるマクロ | |
---|---|
[196130] 123456123789が1232 4561 7891のように分けるマクロ- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/08(15:08)) □U R L/ おじさんからの質問です。 マクロで以下の事が解決できません。 お教えお願いします。 a=123456123789 aの数字を3個ずつ区切り n=len(a) a1=mid(a,1,3) a2=mid(a,4,3) a3=mid(a,8,3) a4=mid(a,11,3) moji=Array(a1,a2,a3,a4) この数字を数字種類ごとに moji=a12 a21 a41 上の数字はどのような数字が 入るかわかりません。 (3個ずつにで分けられる数字で 3桁,6桁,9桁,12桁までです) 上の数字では結果 moji=1232 4561 7891 このようになるよう表示 |
[196131] Re[1]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/04/08(19:19)) □U R L/ >moji=Array(a1,a2,a3,a4) >この数字を数字種類ごとに > >moji=a12 a21 a41 この部分が何を言っているのか分からないなぁ・・ 何故、同じ変数の「moji」が使われるのですか? >上の数字はどのような数字が >入るかわかりません。 上の数字とは具体的にどの数字ですか? あと、こんなコードあり得ないでしょう? ↓ >moji=a12 a21 a41 意味のあるコードを示すか、 フムフムと思える説明がないと訳が分からないです。 |
[196132] Re[2]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/08(20:31)) □U R L/ 私には以下のように読めました。 たたき台としていかがでしょうか? Sub tatakidai() Const DIV = 3 Dim a As String Dim aa() Dim n As Long Dim moji As String Dim ss() As String a = "123456123789" ' a = "123456123" moji = "a12 a21 a41" ' moji = "a12 a41 a21 a31" n = Len(a) ReDim aa(1 To n / DIV) For n = 1 To UBound(aa) aa(n) = Mid(a, 1 + DIV * (n - 1), DIV) Next ss = Split(moji) moji = "" For n = 0 To UBound(ss) moji = moji & hennkann(ss(n), aa) Next moji = Mid(moji, 2) Debug.Print moji End Sub Private Function hennkann(s As String, aa()) As String On Error Resume Next hennkann = " " & aa(Mid(s, 2, 1)) & Right(s, 1) On Error GoTo 0 End Function この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196135] Re[3]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/09(20:58)) □U R L/ お教えありがとうございます。 私の思いが伝わっていないと思います。申し訳ありません。 a=123456123789を3個ずつに分け moji=Array(a1,a2,a3,a4) この数字を3個ずつに分けて マクロ結果が moji=a12 a21 a41 このようにしたいのです。 aの場合は moji=1232 4561 7891 a12とはa1の数字が2個 a21の数字が1個 a41の数字が1個あると言う意味です。 伝えることがむつかしいです。 moji=a12a21a41これでもいいのですが、moji=123245617891 1個ずつは調べられるのですが、同時にmoji=のように同時に調査する方法が 分からないのです。 |
[196136] Re[4]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/04/09(23:32)) □U R L/ >1個ずつは調べられるのですが、同時にmoji=のように同時に調査する方法が >分からないのです。 その部分がちょっと分からないです。 1個ずつ調べるのは面倒なので、 コード1行で mojiに"1232 4561 7891"と入れる方法はないか? と言う質問なのでしょうか? 因みにエクセルのバージョンは何ですか?(複数ある場合は古い方) |
[196137] Re[5]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/10(07:55)) □U R L/ 返答ありがとうございます。 エクセルは2021です。 mojiに"1232 4561 7891"と入れる方法はないか? そうです。 コード1行でなくてもいいのです。 123456123789の文字列をマクロ結果後に 1232 4561 7891と分けるマクロの書き方を知りたいのです。 |
[196140] Re[6]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ hatena -(2024/04/10(10:35)) □U R L/ ご希望のことを、 下記のように解釈しましたが、あってますか。 "123456123789"を3桁ずつに分割する。 ↓ "123","456","123","789" ↓ それぞれの文字列別の個数を調べる。 "123" 2個 "456" 1個 "789" 1個 ↓ 文字列の後に個数を付加して連結して出力 "1232 4561 7891" ちがうなら、どこがどう違うか指摘してください。 |
[196141] Re[7]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/10(14:22)) □U R L/ ありがとうございます。 その通りです。 よろしくお願いいたします。 |
[196143] (削除)- ■記事引用/メール受信=OFF■ □投稿者/ / -(2024/04/11(11:59)) □U R L/ この記事は削除されました |
[196144] Re[9]: (削除)- ■記事引用/メール受信=OFF■ □投稿者/ hatena -(2024/04/11(12:12)) □U R L/ いろいろな方法が考えられます。 連想配列を使うとか、、、 なるべくシンプルなロジックのものを提示しておきます。 ここで、 コードを入れたものを投稿するとなぜかエラーになって投稿できないので、 ロジックを提示しておきますので、ご自身でコード化してください。 与えられた文字列(a="123456123789")の文字数をLen関数で取得 与えられた文字列(a="123456123789")から左3文字を取り出して変数tに代入 与えられた文字列aからReplace関数でtを""に置換 置換前の文字数から置換後の文字数を引いて3で整数除算するとtの個数 tの後に個数と半角空白を付加して、結果文字列(moji)に追加 これをDo Loopステートメントで与えられた文字列aが""になるまで繰り返し処理 以上 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196145] Re[10]: (削除)- ■記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/11(16:36)) □U R L/ 私の能力では、難しくてコード化できません。 コード投稿が、エラーになるようなら すいませんが、そのコードをメモ帳文で 投稿できないでしょうか? 申し訳ありません。 |
[196146] 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/04/11(17:01)) □U R L/ アップロードエラーを避ける為、 とりあえず ただの文章をアップする。 その後、投稿を編集する形でコードをアップしてみる。 <編集でコードをアップしてみた> 駄目ですねー 以下で拒否されます。 ↓ The server refuse to browse the page. The URL or value may not be correct. Please confirm the value. |
[196147] Re[12]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ hatena -(2024/04/11(18:03)) □U R L/ コードを全角に変換してアップしてみました。 半角に変換してから、VBA画面に貼り付けてください。 Public Sub Test() Dim a As String Dim l As Long Dim t As String Dim moji As String a = W123456123789W Do Until a = WW l = Len(a) t = Left(a, 3) a = Replace(a, t, WW) moji = moji & t & (l − Len(a)) \ 3 & W W Loop moji = Trim(moji) Debug.Print moji End Sub |
[196148] Re[13]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ hatena -(2024/04/11(18:16)) □U R L/ 全角から半角への変換は、たいていのテキストエディターでできます。 そのようなエディターをインストールしてない場合は、下記のサイトで変換できます。 h ttps://so-zou.jp/web-app/text/fullwidth-halfwidth/ |
[196149] Re[14]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2024/04/11(20:01)) □U R L/ 一例 Sub test() Dim dic As Object, k, i As Long Dim ss As String, s As String Dim moji As String ss = "123456123789" Set dic = CreateObject("scripting.dictionary") For i = 1 To Len(ss) Step 3 s = Mid(ss, i, 3) dic(s) = dic(s) + 1 Next For Each k In dic moji = moji & " " & k & dic(k) Next MsgBox Mid(moji, 2) End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196150] Re[15]: 123456123789が1232 4561 7891のように分けるマクロ- ■ / 記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/11(20:10)) □U R L/ hatenaさん、マナさんありがとうございました。 お二人さんのコード確認しました。 念願がかないました。 |
[196151] Re[16]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2024/04/11(20:17)) □U R L/ ↓のような場合、期待する結果は? "123451236789" |
[196152] Re[17]: 123456123789が1232 4561 7891のように分けるマクロ- ■記事引用/メール受信=OFF■ □投稿者/ おやじ -(2024/04/11(21:36)) □U R L/ "123451236789" このようには数字が出ません 3個同じ数字が順番に出るのです。上のような数字は出ないのです。 ありがとうございました。終わります。 |
このトピックに書きこむ |
---|