-PR-
解決済み

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

  • すぐに回答を!
  • 質問No.98346
  • 閲覧数1466
  • ありがとう数9
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 48% (121/248)

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

どうぞ教えてくださいm(_ _)m
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

空白を削除するセルを選択して、下記のマクロを実行します。空白を除いた文字に書き換えます。
蛇足ですが、セルを選択する時は、先頭セルを選択して、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

お礼率 48% (121/248)

回答ありがとうございます!

そう、これです、もう、とっても感謝します(^^)
投稿日時 - 2001-07-02 14:19:08
関連するQ&A
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 48% (12/25)

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

Trimだけなら、マクロではなく、ワークシート関数の方が楽です。
お礼コメント
kenichi

お礼率 48% (121/248)

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

他に方法はないでしょうか?
投稿日時 - 2001-07-02 11:39:07


  • 回答No.2
レベル14

ベストアンサー率 33% (1403/4213)

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

下方向へのコピーが大量なら、セルB1の右下の■(フィルハンドルという)を
ダブルクリックするとOKです。(途中に空白があったらだめですけど)

確認にはCtrlキーを押したまま、↓キーを押すと最終行までジャンプできます。

> がいまいちよくわからず,エラーが出て実行できません.
このエラーが何なのか、気になります。
お礼コメント
kenichi

お礼率 48% (121/248)

回答ありがとうございます。
フィルハンド、知りませんでした。便利ですね!覚えておきます。

VisualBasicEditorでマクロを作ろうと思い、

Sub 空白を除去
(ここをどうにかしてセルの内容をTrimしたものと置き換えたい)
End Sub

をどうにかこうにかしたのですが、技術力不足のせいで出来ません(;;)
投稿日時 - 2001-07-02 11:44:35
  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

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

お礼率 48% (121/248)

マクロで出来るなら、教えてほしいと思います。。。度々すみません(^^;)
投稿日時 - 2001-07-02 14:19:21
  • 回答No.5
レベル13

ベストアンサー率 68% (791/1163)

選択範囲(単一列)に同じ値があると2つ目以降について、その行を削除してしまいます。 重複を調べる列のデータ範囲を選択して、下のマクロを実行します。 標準モジュールに貼り付ければ、どのシートについても実行できるはずです。質問の意味はこういうこと? Sub 同一値がある行の削除() Dim rg As Range '選択範囲 Dim cot As Lo ...続きを読む
選択範囲(単一列)に同じ値があると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

お礼率 48% (121/248)

たびたびありがとうございました。
おかげさまで、勉強もできましたし、目的も達成できましたm(__)m
投稿日時 - 2001-07-06 01:35:19
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ