![从单个 Excel 表中提取所有数字](https://linux22.com/image/1539121/%E4%BB%8E%E5%8D%95%E4%B8%AA%20Excel%20%E8%A1%A8%E4%B8%AD%E6%8F%90%E5%8F%96%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97.png)
给出一个包含混合数字和文本的 Excel 表。
史蒂芬斯:
123|文本|11 ----------- 嗨 | 75| 1
我如何扫描整个工作表并仅提取单列中的数字?
123| ---- 75| ---- 11| ---- 1|
我不喜欢使用 VBA,顺序并不重要。
答案1
答案2
这取决于这里的用例,但我建议的逻辑是(不使用 VBa)将每一列复制到一个长列中,然后按字母顺序排序!
所以它开始于
复制并粘贴到单个列
添加新行和标题单击Filter
(在Data
功能区中,Sort and Filter
选项卡)
从最小到最大排序
只需删除其他行!
如果将所有列复制到一列太耗时,请参阅https://stackoverflow.com/questions/4480227/how-to-consolidate-data-from-multiple-excel-columns-all-into-one-column
Sub MakeOneColumn()
Dim vaCells As Variant
Dim vOutput() As Variant
Dim i As Long, j As Long
Dim lRow As Long
If TypeName(Selection) = "Range" Then
If Selection.Count > 1 Then
If Selection.Count <= Selection.Parent.Rows.Count Then
vaCells = Selection.Value
ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)
For j = LBound(vaCells, 2) To UBound(vaCells, 2)
For i = LBound(vaCells, 1) To UBound(vaCells, 1)
If Len(vaCells(i, j)) > 0 Then
lRow = lRow + 1
vOutput(lRow, 1) = vaCells(i, j)
End If
Next i
Next j
Selection.ClearContents
Selection.Cells(1).Resize(lRow).Value = vOutput
End If
End If
End If
End Sub