0

次の Excel シートを想定します。

  | A
--+-----
1 |foo bar
2 |  bar baz
3 |   baz
4 | bam

先頭のスペースをすべて自動的に削除する方法が必要です。

  | A
--+-----
1 |foo bar
2 |bar baz
3 |baz
4 |bam

これを行うための Excel 関数が見つかりません。誰でも私を助けることができますか?

4

3 に答える 3

2

=Trim(A1)文字列の両側から空白を削除するために使用します。

残りの空白文字を改行に置き換えるには、次のいずれかを使用でき=SUBSTITUTE(A1," ",[X])ます[X]

  • Char(10){改行用}
  • Char(13){改行の場合}
  • [type] Alt+EnterExcel セルに手動で改行文字を挿入する

ヘルプ参照

TRIM(text) 単語間の単一のスペースを除いて、すべてのスペースをテキストから削除します。

SUBSTITUTE(text, old_text, new_text, [instance_num])new_textテキスト文字列での置換old_text

于 2013-02-28T13:37:51.470 に答える
2

セルに変換された値と[return]単語間のスペースを保持する場合は、次のコードを使用します。

'DECLARE VARIABLES
Dim myRng As Range, c As Range

'INITIALIZE VARIABLES
Set myRng = Range("A1:A4")

'LOOP THRU RANGE
For Each c In myRng.Cells
    'TRIM LEADING AND TRAILING SPACES
    c.Value = LTrim(c.Value)
    c.Value = RTrim(c.Value)
Next c

'ADD RETURN SPACE
myRng.Replace What:=" ", Replacement:=Chr(10), LookAt:=xlPart
于 2013-02-28T14:22:42.543 に答える
1

ループを完全に回避する以下の配列アプローチを使用すると、これを非常に迅速に行うことができます

コードは1つの長い行で効果的に実行できますが、わかりやすくするために分割しました。

これにより、元の範囲のすぐ右側のセルが更新されます。

Sub UpDateIt()
    Dim rng1 As Range
    Dim strText As String
    strText = ","
    Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
    With Application
        x = Replace(Replace(.Trim(Join(.Transpose(rng1), strText)), ", ", ","), Chr(32), Chr(10))
        rng1.Offset(0, 1) = .Transpose(Split(x, strText))
    End With
End Sub
于 2013-03-02T03:53:15.267 に答える