• ベストアンサー

エクセルVBAの「split」に関して質問です。

エクセルのVBAのsplitについて質問なんですがsplitを使って「"」で区切って変数に代入したいのですがうまくいきません。 セル(A1)に「aaaaa"bbbbb"cccccc」という文字列が入っているときに 変数 = Split(Range("A1"), """)とやったのですがうまくいきませんでした。 どうぞよろしくお願いします。

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

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

こんにちは。 >aaaaa"bbbbb"cccccc 回答は、#1さんの通りですが、現実的には、「"」 を区切り文字というのは、そのソース元が気になります。もしかしたら、Web のソースだったりする場合、全体的に、Split 関数では、とても面倒な気がします。添え字の位置が特定できないからですが。 こういう場合は、正規表現[VBScript.RegExp]を使用します。 ただ、 >= Split(Range("A1"), """) こういう場合では、私は、見易さのために、 Const QT As String =""""   として、 myArray = = Split(Range("A1"), QT) としています。 ただ、なぜ、「"""」と表すことが出来ないのかは、私は、良く分かりません。 sep = Chr(34) 'では、ローカルウィンドウに「"""」と出すことが出来ますから、 Split(Range("A1").Value, sep) 'というのは可能なのですね。 ※QT = Quatation, sep = Separator

kanjaneko
質問者

お礼

ご丁寧に教えていただきありがとうございました。 ご察しの通りwebのソースからwebのアドレスを取得するのに必要な処理だったのですごい助かりました。 勉強になりました。ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

たぶん関係ないが、Split関数は旧いバージョンではダメだったようにおもう。 ダブルクオートは諸言語仕様の中で特殊な役割を担わされているので 、わたしは”””や””””を使って、うまくいかないときは、Chr(34)(ダブルクオーテーションマークのJISコード)を使って逃げてます。 下記をやってみました Sub test01() a = "aaaa""bbbb""cc" MsgBox a s = Split(a, """") For i = 0 To UBound(s) MsgBox s(i) Next i End Sub この例で、結果的にaaaa,bbbb,ccに分離できました。 データそのものからいじくらないといけないので、現状データでは使えないのかも? Splitをあきらめて、Instrでルーチンを組んでやっては。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

Splitの結果を代入する変数はVariantで宣言されていないといけませんが、そこは大丈夫ですか?

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

どううまくいかないかを具体的に説明してみては。 曖昧すぎる質問ですと、回答が得られにくいので。 > Split(Range("A1"), """) Split( Range( "A1" ).Value, """" ) にしてみるとか。

kanjaneko
質問者

お礼

Split( Range( "A1" ).Value, """" )でやったらできました! どうもありがとうございました。

関連するQ&A

専門家に質問してみよう