• ベストアンサー

エクセル,マクロのTrimの使い方

エクセル2000を使っているのですが,マクロの使い方がよくわかりません. コピーペーストしてきた大量の文字行列の先頭末尾に余分な空白があって正しくソートされません.そこで,Trimを使おうと思ったのですが,使い方がいまいちよくわからず,エラーが出て実行できません. また,重複した内容のセルを抽出・削除もしたいのです. どうぞ教えてくださいm(_ _)m

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

空白を削除するセルを選択して、下記のマクロを実行します。空白を除いた文字に書き換えます。 蛇足ですが、セルを選択する時は、先頭セルを選択して、Shift+Ctrl+↓等で連続エリアが選択できます。 また、Ctrlキーを押しながらマウスで飛び飛びに選択できます。 Sub 空白を除去() Dim rg As Range 'セル For Each rg In Selection rg = Trim(rg) '左右の空白を削除 Next End Sub Trimに関する関数には以下のものがあります。必要なものを使い分けてください。   Trim(rg) 左右の空白を削除(VBA)   RTrim(rg) 右の空白を削除(VBA)   LTrim(rg) 左の空白を削除(VBA)   Application.Trim(rg) 左右、途中の空白を削除(ワークシート関数)

kenichi
質問者

お礼

回答ありがとうございます! そう、これです、もう、とっても感謝します(^^)

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

選択範囲(単一列)に同じ値があると2つ目以降について、その行を削除してしまいます。 重複を調べる列のデータ範囲を選択して、下のマクロを実行します。 標準モジュールに貼り付ければ、どのシートについても実行できるはずです。質問の意味はこういうこと? Sub 同一値がある行の削除() Dim rg As Range '選択範囲 Dim cot As Long 'カウンタ Set rg = Selection Application.ScreenUpdating = False With rg For cot = .Count To 1 Step -1 If Application.CountIf(Range(.Cells(1, 1), .Cells(cot, 1)), .Cells(cot, 1)) > 1 Then Rows(.Cells(cot, 1).Row).Select: Selection.Delete Shift:=xlUp End If Next .Cells(1, 1).Select End With Application.ScreenUpdating = True End Sub

kenichi
質問者

お礼

たびたびありがとうございました。 おかげさまで、勉強もできましたし、目的も達成できましたm(__)m

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

同一データの削除については、A1から下方向にデータがあるとすると、B1に =IF(COUNTIF($A$1:A1,A1)>1,"*","") として、データ分コピーします。あとはオートフィルタを使い「*」だけを出して削除すれば重複データを除けます。これもマクロで行いたい?

kenichi
質問者

補足

マクロで出来るなら、教えてほしいと思います。。。度々すみません(^^;)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

Masazo-さんに便乗です。 下方向へのコピーが大量なら、セルB1の右下の■(フィルハンドルという)を ダブルクリックするとOKです。(途中に空白があったらだめですけど) 確認にはCtrlキーを押したまま、↓キーを押すと最終行までジャンプできます。 > がいまいちよくわからず,エラーが出て実行できません. このエラーが何なのか、気になります。

kenichi
質問者

お礼

回答ありがとうございます。 フィルハンド、知りませんでした。便利ですね!覚えておきます。 VisualBasicEditorでマクロを作ろうと思い、 Sub 空白を除去 (ここをどうにかしてセルの内容をTrimしたものと置き換えたい) End Sub をどうにかこうにかしたのですが、技術力不足のせいで出来ません(;;)

  • Masazo-
  • ベストアンサー率48% (12/25)
回答No.1

Trimだけなら・・・。 A1に貼り付けた値に対して、B1に「=Trim(A1)」を設定します。 後は下方向にコピーする。 Trimだけなら、マクロではなく、ワークシート関数の方が楽です。

kenichi
質問者

お礼

回答ありがとうございます。 それでも出来ることは出来るのですが、文書が大量に(A~Zまで26個)あるので、マクロで出来たら便利かなと思っています。それに、=Trimでやると、Trimされたセルの内容をTrimされる前の内容とをコピペで置き換えられないんです(私には)。 他に方法はないでしょうか?

関連するQ&A