删除/过滤 Microsoft Excel 2013 中的单元格内容
Remove / Filter Cell Contents in Microsoft Excel 2013
我正在寻找清理电子表格中某个特定单元格的单元格内容的最佳方法。现在,D 列在同一个单元格中列出了城市、州和高中(屏幕截图 #1)。我需要将这些值拆分为 3 个唯一的 columns/cells,如屏幕截图 #2 所示。我将如何做到这一点?
** 注意 - 下面的例子只是一个样本大小。我有数千个细胞可以执行此操作。
现有单元格格式:
新格式(希望如此):
使用文本分栏 "delimited" 以逗号分隔,然后再次使用它 "fixed width" 从学校名称中分隔州(假设州始终为 2 个字符)。如果需要,用 TRIM 清理空格。
你好,像这样的东西应该查看 D 行中的所有单元格和 return 你在接下来的 3 列中查找的值;可能需要稍微调整一下
For each cell in Range("D2:D & Range("D2".End(xlDown).Row))
cell.offset(columnOffset:=1) = left(cell,instr(String1:=cell, String2:= ","))
cell.offset(columnOffset:=2) = Mid(cell,instr(String1:=cell, String2:= ",")+1,2)
cell.offset(columnOffset:=3) = right(cell,len(cell)-instr(String1:=cell, String2:= ",")+3)
Next
我试过Jake Duddy的代码,里面有不少错误,不知道能不能用。同时你可以试试下面的代码。
Dim LastRow As Long
Dim State_L As String
Dim City_L As String
Dim HS_L As String
LastRow = Range("D" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
City_L = Left(Range("D" & i), InStr(1, Range("D" & i), ",") - 1) ' Getting up to comma
State_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 1, 2) 'Getting after comma for 2 characters
HS_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 3, Len(Range("D" & i)) - InStr(1, Range("D" & i), ",")) 'Getting after comma+2 characters upto the end
Range("E" & i).Value = City_L
Range("F" & i).Value = State_L
Range("G" & i).Value = HS_L
Next
Select 您要处理的单元格和 运行 这个小宏:
Sub ParseData()
Dim r As Range, L As Long, L1 As Long, L2 As Long
For Each r In Selection
t = r.Text
L = Len(t)
L1 = InStr(1, t, ",")
For i = 1 To L
If r.Characters(i, 1).Font.Italic = True Then
L2 = i
Exit For
End If
Next i
r.Offset(0, 1).Value = Mid(t, 1, L1 - 1)
r.Offset(0, 2).Value = Mid(t, L1 + 1, L2 - L1 - 1)
r.Offset(0, 3) = Mid(t, L2)
r.Offset(0, 3).Font.Italic = True
Next r
End Sub
例如:
我正在寻找清理电子表格中某个特定单元格的单元格内容的最佳方法。现在,D 列在同一个单元格中列出了城市、州和高中(屏幕截图 #1)。我需要将这些值拆分为 3 个唯一的 columns/cells,如屏幕截图 #2 所示。我将如何做到这一点?
** 注意 - 下面的例子只是一个样本大小。我有数千个细胞可以执行此操作。
现有单元格格式:
新格式(希望如此):
使用文本分栏 "delimited" 以逗号分隔,然后再次使用它 "fixed width" 从学校名称中分隔州(假设州始终为 2 个字符)。如果需要,用 TRIM 清理空格。
你好,像这样的东西应该查看 D 行中的所有单元格和 return 你在接下来的 3 列中查找的值;可能需要稍微调整一下
For each cell in Range("D2:D & Range("D2".End(xlDown).Row))
cell.offset(columnOffset:=1) = left(cell,instr(String1:=cell, String2:= ","))
cell.offset(columnOffset:=2) = Mid(cell,instr(String1:=cell, String2:= ",")+1,2)
cell.offset(columnOffset:=3) = right(cell,len(cell)-instr(String1:=cell, String2:= ",")+3)
Next
我试过Jake Duddy的代码,里面有不少错误,不知道能不能用。同时你可以试试下面的代码。
Dim LastRow As Long
Dim State_L As String
Dim City_L As String
Dim HS_L As String
LastRow = Range("D" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
City_L = Left(Range("D" & i), InStr(1, Range("D" & i), ",") - 1) ' Getting up to comma
State_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 1, 2) 'Getting after comma for 2 characters
HS_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 3, Len(Range("D" & i)) - InStr(1, Range("D" & i), ",")) 'Getting after comma+2 characters upto the end
Range("E" & i).Value = City_L
Range("F" & i).Value = State_L
Range("G" & i).Value = HS_L
Next
Select 您要处理的单元格和 运行 这个小宏:
Sub ParseData()
Dim r As Range, L As Long, L1 As Long, L2 As Long
For Each r In Selection
t = r.Text
L = Len(t)
L1 = InStr(1, t, ",")
For i = 1 To L
If r.Characters(i, 1).Font.Italic = True Then
L2 = i
Exit For
End If
Next i
r.Offset(0, 1).Value = Mid(t, 1, L1 - 1)
r.Offset(0, 2).Value = Mid(t, L1 + 1, L2 - L1 - 1)
r.Offset(0, 3) = Mid(t, L2)
r.Offset(0, 3).Font.Italic = True
Next r
End Sub
例如: