人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの質問です。一番右端の半角スペース以降の文字列をすべて削除するような関数やマクロはないでしょうか。
今、B列に次のようなデータが、4万行近く並んでおります。

-----------------------
らくだ 動物 アフリカ
らくだ 動物 特徴
らくだ 生息地 アジア
らくだ 生態 進化の過程
・・・
-----------------------


といった感じです。
この状態から、一番右端の半角スペース以降の文字列全てを削除したいので、

-----------------------
らくだ 動物
らくだ 動物
らくだ 生息地
らくだ 生態
・・・
-----------------------

のようにしたいのですが・・・データが膨大で、手作業で行うのは途方もない作業です。
関数やマクロを用いて、何とか効率的に文字列を削除する方法はないでしょうか。

よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●500ポイント ベストアンサー
Sub main()
 Dim r As Long
 For r = 1 To Rows.Count
 If Cells(r, "B") = "" Then Exit Sub
 a = InStrRev(" " & Cells(r, "B"), " ")
 If a > 1 Then
 Cells(r, "B") = Left(Cells(r, "B"), a - 2)
 End If
 Next r
End Sub



二行目からとかの場合は
For r = 1
の 1を 2に 変えればよいです。


moon-fonduさんのコメント
ありがとうございます! すみません、でも「実行時エラー?5?プロシージャの呼び出し、または引数が不正です」と出てしまいまして・・・ B列に空白セルがあるのが原因でしょうか。 また、実は、 ----------------------- らくだ 動物 アフリカ らくだ 動物 特徴 らくだ 生息地 アジア らくだ 生態 進化の過程 ・・・ ----------------------- のように、全て3つの文字列で構成されてはおらず、 ----------------------- らくだ らくだ 動物 アフリカ らくだ 動物 特徴 らくだ 生息地 調査 アジア らくだ 生態 知りたい なぜ 進化の過程 ・・・ ----------------------- 等、文字列の数がセルによって1フレーズしかない(空白スペースなし)場合や、3フレーズだったり4フレーズだったりと、まちまちでして・・・それゆえ規則性がなく難しいのかもしれないのですが、2フレーズ以上ある場合で、右端のフレーズだけを消せればよいのですが・・・。 もし可能でしたら再度方法等お教えいただけないでしょうか。 よろしくお願い致しますm(__)m

きゃづみぃさんのコメント
回答を 修正しました。

moon-fonduさんのコメント
きゃづみぃさんありがとうございます! うまく消すことができたのですが・・・238行目と239行目が空白セルだからでしょうか、240行目以降、右端のフレーズが消えることなく、そのまま残ってしまうのです。 空白セルはスキップして処理を続けることはできないでしょうか? 度々お手数お掛けしてすみません、もしよろしければ、再回答いただければ幸いです。 よろしくお願い致します。

きゃづみぃさんのコメント
If Cells(r, "B") = "" Then Exit Sub 上記の一行を削除して For r = 1 To Rows.Count Rows.Countの箇所に 最終行番号を 入れてください。

moon-fonduさんのコメント
きゃづみぃさんありがとうございます、うまく消すことができました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ