• 締切済み

エクセルVBAでセル内にある文字列のみを配列に入れたい

VBAでセルに以下のような文字列が入っています。 '6AL847A987_ シングルクオーテーションと7の後のスペースを除いた箇所だけを配列に取り込みたいのですが、何かいい方法はないでしょうか? ちなみに 6AL847A987 だけの場合もあり、スペースがない場合もあります。 すみませんが、よろしくお願いします。

みんなの回答

  • Yes_No_F
  • ベストアンサー率40% (4/10)
回答No.3

こんばんは。 置換え関数の「Replace」を使用する例を紹介します。 例えばセルA1に、質問で言う「'6AL847A987_」の文字が入っている場合は下記の様にすると出来ます。 Sub test() Dim tx As String tx = Range("a1").Value tx = Replace(tx, " ", "") '←「_」を""に置換え tx = Replace(tx, "'", "") '←「'」を""に置換え Range("a1").Value = tx End Sub の様な記述になります。

noname#31387
noname#31387
回答No.2

こんばんは 'からスペースの間の文字列を取り出しています。 スペースは半角に対応しています。 配列に取り込むのはどの様な配列ですか? 一次元?多次元?ジャグ配列? 詳細が書かれてないので、私にはここまでしか分かりません。 勘違いならごめんなさい。 Sub Test() Dim myStr As String, myAns As String Dim mySt As Long, myEn As Long myStr = ActiveSheet.Range("A1").Value mySt = InStr(myStr, "'") myEn = InStr(myStr, " ") If myEn = 0 Then myEn = Len(myStr) myAns = Mid(myStr, mySt + 1, myEn - mySt) MsgBox myAns End Sub

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

<シングルクーテーションの問題> (1)文字 であれば除くのは簡単 (2)プレフィックスの場合があるかも http://dospara.okwave.jp/qa2699896.html 再代入すればプレフィックスは消えるかも知れない。 >後のスペースを除いた箇所 Trim関数があります。(LTrim,RTrim もある) <配列にセルの値を取り込む問題> せっかくエクセルのセルはCells(i,j)で2次元配列的に扱えるので、わざわざ配列に入れるのは、避けられませんか。 配列に入れた後に、多数回の繰り返し演算をする必要があるのでしょうか。それならやむをえないが。

komusemari
質問者

お礼

返信遅くなりました。すみません。 回答ありがとうございます。 スペースはTrim関数を使えばいけそうですね。 早速試したいと思います。 配列に入れるのは、多数回の演算処理を行いたいからです。 ありがとうございましたー!

関連するQ&A

  • Excel 数値を文字列にしたい

    お世話になります。 例えば、型番として  0001  0001A  0001B  0002   ・   ・ というものがあった場合、0001と0002は数値と認識されて1と2に なってしまいます。 この状態で、セルの書式設定で文字列にしたとしても、現状の1が 文字列になるだけです(要するに手遅れ)。 また、頭にシングルクォーテーションをくっつけて'0001や'0002と 入力してやればよいかと思うのですが、上記のようなケースが 数百行あった場合、ひとつずつシングルクォーテーションを くっつけていくには手間がかかります。 何かよい方法はございますでしょうか。 ご教示の程、宜しくお願い致します。

  • VBA 文字列をキレイにしたいです。

    エクセルVBAでツールを作成しようとしています。 他のソフトで作成したデータなども関連するため、セルの中の文字列の先頭にシングルコーテーションが付加されてしまうケースがあるのですが、これが不要なので外したいと思います。 方法を検索した結果、以下の例を見つけました。 ---- 「'」を削除したいセルを選択してマクロを実行すると、 すべてのセルで先頭の「'」を削除します。 Sub Sample() Dim a As Range For Each a In Selection If Not a.HasFormula Then a = a Next a End Sub ---- 上記の方法だとセルを対象にしていると思うのですが、 プログラム上でセルの中身を既にstring型の変数に入れているのでその変数を用いて実現したいと考えていますが、書き換え方が分かりませんのでご教授いただけたらと思います。 宜しくお願い致します。

  • Excel VBA セル内の文字列操作について

    例えば、A列(A2より下のセル)のセル内にある文字列が、それぞれ対応するB列(B2より下のセル)のセル内にあった場合、該当文字列のフォントの色を変えたい(例えば「赤」)のですが、VBAで一括処理とかできるのでしょうか? <例> A列      B列 テスト     このテストは・・・ → 「テスト」の部分のみ赤色にしたい。 サンプル   サンプル     → 文字列全部分の「サンプル」を赤色にしたい。 どうかご教示の程よろしくお願いいたします。

  • 【VBA】 文字列の中から指定の文字列を取り出す

    VBAで文字列から指定の文字のn番目からn+1番目までの文字列を取り出すことは可能でしょうか? A1セルに下記の文字列があった場合、「1番目の半角スペースから2番目の半角スペースまでの文字列」を取り出したいのです。 5 53 00 8R この場合、53を取り出したいというわけです。 また、可能でしたら「最後の半角スペースから文字列の最後まで」を取り出す方法も教えていただけるとありがたいです。 この場合は8Rとなります。 InStr関数を使えばできるかもと思ったのですが、できそうなものが思い浮かびません。 どなたか教えていただけませんでしょうか。 よろしくお願いいたしますm(_ _)m

  • VBA でセルの文字列に"-"等の文字を挿入したい

    VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

  • join関数で文字列を''で括りたい

    いつもお世話になっております。 SQLのQueryを生成するため、 配列をjoinしようと思ってます。 joinの値は文字列なので、シングルクオーテーションで括りたいと考えてるのですが、 うまい方法を探しております。 ご存知なら御教授いただきたいです。 今はjoinの配列にデータを入れる際にシングルクオーテーションを文字列結合しております。

    • 締切済み
    • PHP
  • EXCEL VBA 文字列

    A列のセルに、文字列が以下の様に並べられています。 【あああああ】いいいいいいううううううえええおおおお 上記のような場合に、”あああああ”と【】の文字だけを取り出して、B列に表示させることはマクロで可能でしょうか?但し、【】のなかの文字数はセルによりバラバラです。 ネットでかなり検索したのですが、自分では解決できませんでした。 どうか、よろしくお願いいたします。

  • Excelでセル内の文字列のみをコピーする方法

    Excelでセル内の文字列のみをクリップボードにコピーする方法を教えてください。 ※クリップボードにコピーをする方法であり、他のセルに値のみをペーストする方法ではありません。 満たしたい点は2つです。 ・表示している文字列のみを取得 ・複数のセルを同時にコピー 一つのセルに以下の文字列が入っていた場合(#以外) #123 #"abc" コピーするとクリップボードを文字列として取得すると以下の文字列が得られます #"123 #""abc""" これを以下の文字列が得られるようにしたいのです。 #123 #"abc" 1つのセルだけでいい場合は、セルを編集状態にしてコピーしたり アクティブセルの数式バーをコピーすればいいのですが、 これは当然、複数のセルを同時に選択する場合には使えません。 VBAを使う方法でもそうでなくてもかまいません。 (VBAの場合はコードもお願いしたいです) よろしくお願いします。

  • Excel 同じ内容の文字列セルをまとめる

    お世話になります。 文字列の入った複数セルの中から 同じ内容のものがある場合 これらを配列数式データ上でまとめたいと思ってます MATCH構文を使って MATCH($A:$A,$A:$A,0)として 自らと同じものが何処に最も早く現れたかの配列数式データを作り これをソートして その後の主処理のデータにしたのですが MATCH構文かたくじ式なのでしょうか 物凄く遅いのです。 で本題なのですか MATCH構文を使わず 軽いCPU負荷で 配列数式上にある複数文字列データの同じものをまとめたいとき どうすればいいでしょうか? ご教示お願いします。

  • VBAで文字列を各セルに出力

    はじめまして。 業務でVBAを使うことになり、勉強中なのですが、 動的な文字列をスペースごとに区切り、各セルに出力する方法がわかりません。 どなたかご教授ください。 str = "EMPNO = 1111 AND DEPTNO = 4444" という文字列を 演算子 フィールド 条件 比較値 ------------------     EMPNO  | = | 1111 AND | DEPTNO  | = | 4444 となるようにしたいのです。