2011-07-08 6 views
2

Excelのドキュメントでは、大学の目論見書の名前と住所が.tabファイルから取られたメーリングリストがあります。しかし、アドレスは単一のセルに含まれ、各行は改行で区切られています。特定の文字に応じてセルを複数のセルに分割するためのExcel VBAマクロが必要

私はマクロを実行する必要があります。これは、異なる部分を別々のセルに分けることができます。私は基本的に構造を知っていますが、VBAの能力については全く考えていません。

キャリッジリターンが現れるまでスキャンして、キャリッジリターンを差し引いたキャリッジリターンを新しいセルに入れ、最後にキャリッジリターンがないので、セルに文字が残らなくなるまでスキャンを続ける必要があります。

これは可能ですか?

答えて

4

を助け、あなたのVBAマクロのコードです:それを想定し

vbLfChr(10)と同じである
Dim rngSource As Range 
Dim rngDestination As Range 

Set rngSource = Sheet1.Range("A1:A5") ' or wherever your list is 
Set rngDestination = Sheet1.Range("C1") ' parsed data will be placed here 

rngSource.TextToColumns _ 
    Destination:=rngDestination , _ 
    DataType:=xlDelimited, _ 
    Other:=True, _ 
    OtherChar:=vbLf ' This is where you define your delimiter character 

は、あなたの区切り文字です。キャリッジリターンの種類によっては、代わりにvbCr(または同等の場合はChr(13))を使用する必要があります。

@ Jon Egertonの非マクロ的なやり方はうまく動作することに注意してください。しかし、複数回実行する必要がある場合は、クリック、選択、入力、コピー、特殊な貼り付け、間違った場所に貼り付けたり、やり直すなどの作業に疲れがちになりがちです。より再利用可能。それは味の問題だと思います。

+0

ありがとう、これは私が探していたものです。完璧に動作します。 – Murray

4

次のように、VBAなしでこれを行うことができます:

  1. キャリッジリターンを置き換えるために列Bに、この式を使用します(私はあなたのデータが列Aであると仮定しています):=SUBSTITUTE(A1,CHAR("10"),"|")
  2. 列Bをコピーし、PasteSpecialを使用する - 実際のデータを列Cにコピーする値
  3. 列Cのテキスト列を使用して| Dとは別の細胞への以降

希望は、これはここで

+0

+1 Aha、 'SUBSTITUTE'! –

+0

@Jean:私はいつもREPLACEを忘れています。 –

+0

ありがとうございました。それは完璧に動作しますが、私はプログラミングのバックグラウンドから来ているので、マクロを実行するだけで簡単です。しかし、本当に助けてくれてありがとう! – Murray

関連する問題