No.15ベストアンサー
- 回答日時:
すみません。
B列の内容について、勘違いがありました。(提示されたC列の内容もB列に含まれていると解釈していました)
以下は、単純にB列の内容の両端の空白を削除した結果をA列に設定するマクロです。
前のマクロは破棄してください。
Option Explicit
Public Sub 不要物削除()
Dim i As Long
For i = 1 To 4000
Cells(i, "A") = Trim(Cells(i, "B").Value)
Next
End Sub
tatsumaru77様
バッチリです。
補足説明に罫線を引ければ誤解されなかったと思うのですが
文字と文字の間を空白で開けていましたが、投稿した後は
空白がなくなって157k-46587.458の様になっていました。
すみません、手間を取らせてしまいました。
これで、業務に役立てそうです。
色々とありがとうございました。
No.14
- 回答日時:
No1です。
以下、いささか辛口になりますが・・
>VBAを使ってやってみたいと思っています。
普通なら、VBAを作成して自分で実行することを言うと思います。
一方で、やり取りを見ていると、質問者様のなさっていることは「コピペ」と「できない」と書込むことだけ。
他人が作ったものを「使って」みたいということなら、既に、目的は達成できているはずと思います。
(結果は思う通りではなくても、「使ってみる」という目的は達成できている)
曖昧な情報しかないので、正確な回答にならないのだと想像しますけれど・・
>関数のTRIMを使えばできるのですが~~
もしも、これが正しいのなら、TRIMを使えば済むだけの話と思います。
Sub hoge()
For Each c In Range("B1:B4000")
c.Offset(, -1).Value = Trim(c)
Next c
End Sub
徹底して行うのなら、No6様の方法で
RE.Pattern = "[\f\n\r\t\s ]"
として、
For rw = 1 To 4000
Cells(rw, 1).Value = RE.Replace(Cells(rw, 2).Value, "")
Next rw
とでもすればセル内改行や文字間のスペースも取り除けます。
>大変参考になりました、
「無視します」としか読み取れませんね。
No.12
- 回答日時:
>文字によっては(157kとか)空白のままでした。
B列が
157K -41139.649 66259.242
の場合は、
A列に
157K -41139
と設定されることを期待していますか。
それとも、
157-41139
と設定されることを期待していますか。
又、上記例ではKが1文字ですが、
157XYZ -41139.649 66259.242
のように、英字が複数の場合もあるのでしょうか。
又、
XYZ157 -41139.649 66259.242
のように英字が前にある場合もあるのでしょうか。
No.11
- 回答日時:
No9です。
>実行できましたが、A列は空白です。
9行目の
RE.Pattern = "^(\d+-\d+).*$" を
RE.Pattern = "^(\d+-\d+).*" に変えた場合(最後の$をとる)、どうなりますか。
又、
A列の全ての行が空白なのでしょうか。それとも、特定の行のみが空白なのでしょうか。
No.10
- 回答日時:
既出の回答を弄るのはマナー違反とは思いますが。
RE.MultiLine = True '←追加してみる?
RE.Global = True
データ的に打ち込んだと言うより何かから出力された物をコピペされているのかどうか???
No.9
- 回答日時:
No.8
- 回答日時:
>Option Explicitのところでコンパイルエラーがでました。
もしかして、標準モジュール内に、既にあなたが作った処理があり、
Sub xxxx()
'何かの処理
End Sub
Option Explicit
Public Sub 不要物削除()
・・・
のようになってますか?
その場合は、Option Explicitの行を削除してください。
No.7
- 回答日時:
>Option Explicitのところでコンパイルエラーがでました。
Option Explicit
Option Explicit
Public Sub 不要物削除()
のように、Option Explicitが2行になっていませんか?
Option Explicitは1行だけにしてください。
No.6
- 回答日時:
以下のマクロを標準モジュールに登録してください。
B列から不要分を削除した結果をA列にセットします。
Option Explicit
Public Sub 不要物削除()
Dim i As Long
Dim RE As Object
Dim str As String
Dim matches As Object
Dim submatch As Object
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = "^(\d+-\d+).*$"
RE.Global = True
For i = 1 To 4000
str = Cells(i, "B").Value
If str <> "" Then
Set matches = RE.Execute(str)
If matches.count > 0 Then
Set submatch = matches.Item(0).submatches
Cells(i, "A").Value = submatch(0)
End If
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクティブセルから、A列最終行...
-
画面を強制的に再描画させる方法
-
どなたかこのプログラミングを...
-
乱数の桁数指定、または範囲指定。
-
アセンブラによるウェイト(WAIT...
-
VBA for i=1 to lastrow
-
VBAでの一時停止と再開の方法
-
alarmの使用について
-
For文を使った九九表の作成
-
「偶数・奇数の和」のフローチ...
-
UWSCの終了の仕方
-
EXCEL VBA(初心者)印刷ルー...
-
テキストボックスの名前に変数...
-
C言語 4) int 型配列 month を...
-
ループフリー
-
VBA Dir関数でファイルをループ...
-
変数の扱える範囲
-
vb.netからエクセル関数書き込み
-
一巡伝達関数と開ループ伝達関数
-
while(*s++=*t++)の判定は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
ループ7回目の悪役令嬢は、元敵...
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
エクセルの当番表を作っていま...
-
GIFアニメをループさせたくない
-
VBAで3秒だけ時間を止めたい
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
DOSコマンドのループ内のTIMEコ...
-
ListBox 複数選択 で オートフ...
-
vbscriptでIE自動入力(途中で...
-
vb.netからエクセル関数書き込み
-
DoEventsが必要な理由について
-
Java 南京錠
-
アクティブセルから、A列最終行...
-
テキストボックスの名前に変数...
-
範囲指定したセルを1つずつ飛...
-
VBA Dir関数でファイルをループ...
おすすめ情報
データベース
検索値 A列 B列 C列 D列
任意の文字を手入力 2-124 2-124 -41468.298 65992.144
2-125 2-125 -41466.876 65997.72
2-126 2-126 -41464.449 66009.815
説明不足でしたので再度質問します。
B列の文字列の中から検索しC列、D列のX座標、Y座標を引っ張って来てある計算をします。
ところが、B列の文字には目には見えない不要なものが文字の後ろについています。
そこで、関数TRIMを使ってB列の不要なものを取り除きA列に移したいのですが、データは4000
行あります。
データベース
検索値 A列 B列 C列 D列
任意の文字を手入力 2-124 2-124 -41468.298 65992.144
2-125 2-125 -41466.876 65997.72
2-126 2-126 -41464.449 66009.815
説明不足でしたので再度質問します。
B列の文字列の中から検索しC列、D列のX座標、Y座標を引っ張って来てある計算をします。
ところが、B列の文字には目には見えない不要なものが文字の後ろについています。
そこで、関数TRIMを使ってB列の不要なものを取り除きA列に移したいのですが、データは4000
行あります。
B列の文字の後ろにある不要なものを削除したいです。
よろしくお願いします。
お世話になります。
Option Explicitのところでコンパイルエラーがでました。
よろしくお願いします。
Option Explicitは1行ですけど?
お世話になります。
頂いたコードのみで実行しました。
すみません、2時間ほど離席します
良かったらまたお願いします。
お世話になります。
実行できましたが、A列は空白です。
よろしくお願いします。
急いでないので来週で結構です。
お世話になります。
朝一からありがとうございます。
RE.Pattern = "^(\d+-\d+).*" に変えたら、OKでしたが
文字によっては(157kとか)空白のままでした。
A列 B列 Ç列 d列
157K -41139.649 66259.242
2-151 2-151 -41782.718 65764.719
2-95 2-95 -41779.504 65769.945
217K -41163.247 66049.471
こんな感じです。
ちなみに、実行するまえはA列は空白です。
よろしくお願いします。
お世話になります。
前回の補足説明では、157K-41139.649 66259.242の様にB列、C列、D列の文字が
くっついているように見えますが、C列、D列はなにも操作はしません。
出来ればB列の文字がどのようなものでも、不要なものを削除してA列に持っていきたいのですが
別のキャドからデータを取るときに2-151のようなものだけ取ってくればいまのままで
大丈夫です。
A列 B列 C列 D列
157K -41139.598 66259.242
2-251 2-251 -41782.458 65764.719
お世話になります。
A列には157Kにしたいです。
よろしくお願いします。