🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

26933閲覧

エクセルの区切り位置をマクロで実行させたい。

yupon

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/10/30 04:05

以下のようなテキストデータをエクセルに読み込み区切り位置をマクロで実行。
{'〇〇1': {'data_count': 132}, '〇〇2': {'data_count': 343}, '〇〇3': {'data_count': 333}

数字の後ろの}を区切りたいのですが、探し当てることができず、有識者の方ご教示いただきたいです。

また、実行後、右一列に表示されますが、これを縦に表示させることは可能でしょうか?

Option Explicit Sub divide() Dim objSheet For Each objSheet In ThisWorkbook.Worksheets objSheet.Range("A:A").TextToColumns Comma:=True Next End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/10/30 04:12

> 数字の後ろの}を区切りたい 具体的にどういう結果が欲しいのかさっぱりわかりませんので具体的に質問に記載ください。 文面通りなら、以下になりますがこれでいいんですか? セルA1に「{'〇〇1': {'data_count': 132」 セルA2に「, '〇〇2': {'data_count': 343」 セルA3に「, '〇〇3': {'data_count': 333」
hatena19

2019/10/30 05:48

あとA列全体を対象にしているようですが、A列には複数行のデータがあるのですか。 その場合、どのような出力にしたいかも具体的に説明してください。
yupon

2019/10/31 13:56

Y.H.様 おっしゃる通り、 セルA1に「{'〇〇1': {'data_count': 132」 セルA2に「, '〇〇2': {'data_count': 343」 セルA3に「, '〇〇3': {'data_count': 333」 なのですが、 一番必要なのは一番右の数字(132、343、333)で、現在のやり方ですと数字の右側に } がついた状態となります。 縦に並べかつ、数字の横の } を取り除きたいです。
yupon

2019/10/31 14:03

hatena19様 以下のような形にしたいです。 一番右の数字(132、343、333)が必要ですが、記載したマクロを実行すると数字の横に } が入り、これを除きたいです。      A  B   C  ・・・・・ 1行目 {'〇〇1': {'data_count': 132} 2行目 '〇〇2': {'data_count': 343} 3行目 '〇〇3': {'data_count': 333}
hatena19

2019/10/31 15:26

最終的に欲しい結果は何なんでしょう。それを例示してください。 あと、数値は3桁固定ですか。 変換したいデータは A1 だけですか。
yupon

2019/11/12 08:15

申し訳ありません。 具体的に欲しい結果は、132、343、333です。 三桁とは限らないです。
guest

回答1

0

ベストアンサー

質問の仕様が不明瞭なので、とりあえず、
TextToColumns Comma:=True の縦展開の場合のコード例

A1のテキストを、A2以下にカンマ区切りで分割して出力

vba

1Sub TextToRows() 2 Dim a As Variant 3 a = Split(Range("A1").Value, ",") 4 Range("A2").Resize(UBound(a) + 1).Value = WorksheetFunction.Transpose(a) 5End Sub

追記

はい、数字だけを縦にならべたいです。

とのことなので、
とりあえず A1セルに
{'〇〇1': {'data_count': 132}, '〇〇2': {'data_count': 343}, '〇〇3': {'data_count': 333}
というデータが入力されていて、それの 'data_count': の後の数値を取り出して、
A2セルから縦に出力するという場合のコード例を提示しておきます。

vba

1Sub NumsToRows() 2 Dim a As Variant 3 a = Split(Range("A1").Value, "'data_count':") 4 5 Dim i As Long 6 For i = 1 To UBound(a) 7 Range("A1").Offset(i).Value = val(a(i)) 8 Next 9End Sub

上記を参考にご希望の仕様に合わせて修正してください。

実行結果スクリーンショット
実行結果スクリーンショット

投稿2019/10/30 12:26

編集2019/11/13 02:28
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yupon

2019/10/31 14:06

誠にありがとうございます。 縦に並びました。 A列にすべてが展開されましたが、これをさらに区切り、最終的にはdata countの横の数字が一つの列に並ぶと理想です。 この度質問で記載したマクロを実行すると、数字の横に }がついてきてしまいます。
hatena19

2019/11/01 04:26

数字だけを縦にならべたいということですか。 曖昧な表現でなく、正確に誤解なく伝わように努力してください。 誤解があるとせっかく回答をするのに要した時間が無駄になります。 この回答をヒントに自力でできるとこまでコードを書いて質問に追記してはどうですか。 これでは、コードの作成依頼になってしまいます。
yupon

2019/11/12 08:47

お時間を無駄にしてしまい申し訳ありません。 はい、数字だけを縦にならべたいです。 先日から自力でやっておりますが、なかなかうまくいかないので、もう少し詰めてからコードを記載したいと存じます。
yupon

2019/11/14 09:58

ありがとうございます。 このようなやり方は知らず、大変ためになりました。 なかなかうまくいかなかったので、本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問