• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列での文字列の連続処理)

配列での文字列の連続処理

このQ&Aのポイント
  • VBAで配列を使用して文字列の連続処理を行いたい場合、以下の手順を試してみることができます。
  • まず、データを配列に読み込みます。
  • 次に、配列をループして文字列の操作を行い、必要な部分を切り出してセルに書き込みます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

やりたいのはこういう事かな? 文字数 = Len(元データ) ↓ 文字数 = Len(元データ(i, 1))

tomomaki168
質問者

お礼

お世話になりました!!! お忙しいところ本当にありがとうございました!!! これでmidやright,leftで文字列を取得できそうです!!!

その他の回答 (2)

回答No.3

前半に、元データ = Range("D1:D3087")という記述があり、後半に、文字数 = Len(元データ)とあります。これを翻訳すると、D1~D3087の"範囲"の"文字数を"数えよ、というおかしな命令になります。これが、「型が合わない」というエラーになる原因です。 Lenを使う理由がよく解りませんが、Lenは、1個の文字列データが「何文字か」という事を数える関数で、「何個あるか」を数えるものではありません。 ですから、Len(たくさんのデータ)としても、Len(データの入ってる範囲)としてもエラーになります。 さて、具体的な解決策ですが、今回のように、セルD1~D3087という決まった範囲を参照する場合には、それをひとかたまりの「オブジェクト」として管理するのが定番です。 そして、そのオブジェクトからひとつずつデータを拾い上げて、加工なりなんなりするには、For Eachを使います。 取り出す1個1個のデータを、「個々のデータ(n)」と名付けるとすると、 Dim 元データ As Range Dim 個々のデータ(3087) As String Dim 番号 As Long Set 元データ = [D1:D3087] For Each i In 元データ 番号 = 番号 + 1 個々のデータ(番号) = i.value 'データの加工処理 Next i という感じのコードになります。

tomomaki168
質問者

お礼

お忙しいところ本当にありがとうございます。 勉強になりました。 処理としては前回答者さんの方法で大丈夫でしたが 同じ処理でも色々な書き方があるんですね!! ありがとうございました!!!

  • mayoke
  • ベストアンサー率25% (16/62)
回答No.1

一括でVariant型の配列に入れるんじゃなく、 一旦String型の配列にループで格納するといいんじゃないですか? 3000行なら一瞬です。 また、上記は説明用の例なのかもしれませんが 上記例であれば、配列に入れるまでもないです。 単純にセル値のCOUNTをダイアログに出せばよさそうです。

tomomaki168
質問者

お礼

お忙しいところ本当にありがとうございます。 元データからmidやright,leftで任意の文字列を取得したかったのです!!!

関連するQ&A