エクセルVBAでの番号とテキスト:スプリットは、私は次の形式で私のExcelの列に持って
Column A
100 Test A
200 Test B
300 Test C
私はExcelを開きたい、そのように2列に分けて数値やテキストを分割:
Column A Column B
100 Test A
200 Test B
300 Test C
誰でもこのことを教えてください。
エクセルVBAでの番号とテキスト:スプリットは、私は次の形式で私のExcelの列に持って
Column A
100 Test A
200 Test B
300 Test C
私はExcelを開きたい、そのように2列に分けて数値やテキストを分割:
Column A Column B
100 Test A
200 Test B
300 Test C
誰でもこのことを教えてください。
は、私はあなたが物事をovercomplicate思う:あなたが使用することができます
Option Explicit
Sub SplitCells()
Dim totRange As Range
Dim r As Range
Dim splitted() As String
Set totRange = Range("A1:A3")
For Each r In totRange
splitted = Split(r.Value, " ")
r.Value = splitted(0)
r.Offset(0, 1).Value = splitted(1) & " " & splitted(2)
Next r
End Sub
はい、これは私に同じ解決策を提供し、プロセスも簡単にしました。ありがとう:) –
非VBAオプション
カラムBについて=--left(A1,find(" ",A1)-1)
及びカラムC
=right(A1,len(A1)-find(" ",A1))
ために
必要に応じてそれらをコピーします。なんらかの理由で、数値をテキストとして保持し、数値に変換しない場合は、最初の式から - を削除します。方程式の終わりにあなたの数字をテキストとして数値に変換する他の方法は+0または* 1です。基本的に数値をテキストとして数値演算に入力し、それを数値に変換します。
ありがとうございました。私はほぼ正常に動作するソリューションを持っています。
Private Sub SplitData()
Dim sourceSheetName As String
Dim sourceSheet As Worksheet
Dim lastRow As Long
Dim uboundMax As Integer
Dim result
On Error GoTo SplitterErr
sourceSheetName = "TestSheet"
If sourceSheetName = "" Then _
Exit Sub
Set sourceSheet = Worksheets(sourceSheetName)
With sourceSheet
lastRow = .Range(sourceColumnName & .Rows.Count).End(xlUp).Row
result = SplittedValues(data:=.Range(.Cells(1, sourceColumnName), _
.Cells(lastRow, sourceColumnName)), _
partsMaxLenght:=uboundMax)
If Not IsEmpty(result) Then
.Range(.Cells(1, sourceColumnName), _
.Cells(lastRow, uboundMax)).value = result
End If
End With
SplitterErr:
If Err.Number <> 0 Then _
MsgBox Err.Description, vbCritical
End Sub
Private Function SplittedValues(_
data As Range, _
ByRef partsMaxLenght As Integer) As Variant
Dim r As Integer
Dim parts As Variant
Dim values As Variant
Dim value As Variant
Dim splitted As Variant
If Not IsArray(data) Then
' data consists of one cell only
ReDim values(1 To 1, 1 To 1)
values(1, 1) = data.value
Else
values = data.value
End If
ReDim splitted(LBound(values) To UBound(values))
For r = LBound(values) To UBound(values)
value = values(r, 1)
If IsEmpty(value) Then
GoTo continue
End If
' Split always returns zero based array so parts is zero based array
parts = VBA.Split(value, delimiter)
splitted(r) = parts
If UBound(parts) + 1 > partsMaxLenght Then
partsMaxLenght = UBound(parts) + 1
End If
continue:
Next r
If partsMaxLenght = 0 Then
Exit Function
End If
Dim matrix As Variant
Dim c As Integer
ReDim matrix(LBound(splitted) To UBound(splitted), _
LBound(splitted) To partsMaxLenght)
For r = LBound(splitted) To UBound(splitted)
parts = splitted(r)
For c = 0 To UBound(parts)
matrix(r, c + 1) = parts(c)
Next c
Next r
SplittedValues = matrix
End Function
しかし、次のようにコードのこの作品の出力は次のとおりです。
Column A Column B Column C
100 Test A
200 Test B
300 Test C
だから、まだこれに取り組んでいます。何かがうまくいくかどうか教えてください。おかげ
(例えば) 'スプリット(cellValue、 ""、1)'あなたは何を試してみましたか? –
@TimWilliamsは2016関数に分割されていますか? –
いいえ、それはVBAにあります.Office 2000では(QはVBAでタグ付けされています) –