提取范围内的数字(Microsoft Excel)
Robert在A列中有一系列数字,范围是1到100。他只想提取65到100之间的那些值(包括端值),并将它们放在B列中。他想知道是否有一种方法可以轻松地做到这一点。
简短的答案是,如果您不介意对数字列表进行排序,则有一种非常简单的方法。请按照下列步骤操作:
。在A列中选择一个单元格。(选择哪个单元格并不重要,只要它是包含数字的单元格之一即可。)
。显示功能区的“数据”选项卡。
。单击“排序最小到最大”工具,在“排序和筛选”组中。
Excel对列中的所有数字进行排序。
。选择要放入B列的数字。
。按Ctrl + X可以将单元格剪切到剪贴板。
。选择单元格B1(或要在其中显示值的列B中的第一个单元格)。
。按Ctrl + V将单元格粘贴到列中。
而已;现在,您已将所需的单元格放入B列中。如果您只想复制这些单元格,则可以在步骤5中按Ctrl + C。
如果您需要将A列中的值保持其原始顺序(减去要移动的值),则可以通过将B列用作“预留位置”列来实现。在A列中第一个值的右边,添加值1。然后,在B列中的值下面放置2,然后是3,依此类推,直到A列中的每个值在B列中都有一个对应的值,指示数字位置。然后,请按照下列步骤操作:
。在A列中选择一个单元格。(选择哪个单元格并不重要,只要它是包含数字的单元格之一即可。)
。显示功能区的“数据”选项卡。
。单击“排序最小到最大”工具,在“排序和筛选”组中。
Excel对列中的所有数字进行排序。
。选择您要移动的A列中的数字,以及B列中它们右侧的数字。 。按Ctrl + X可以将单元格剪切到剪贴板。
。选择单元格D1。 (选择单元格D1很重要,因为您需要将C列留空。)
。按Ctrl + V将单元格粘贴到D和E列中。 。在B列中选择一个单元格。 。显示功能区的“数据”选项卡。
。单击“排序最小到最大”工具,在“排序和筛选”组中。
Excel根据B列中的值对列中的所有数字进行排序。 。在E列中选择一个单元格。 。功能区的“数据”选项卡仍应显示。
。单击“排序最小到最大”工具,在“排序和筛选”组中。
Excel根据E列中的值对列中的所有数字进行排序。 。删除列B,C和E。
此时,A和B列中的值反映了它们全部位于A列中的原始顺序。
移动单元格的另一种方法是使用Excel的筛选功能。请按照下列步骤操作:
。在A列中选择一个单元格。(选择哪个单元格并不重要,只要它是包含数字的单元格之一即可。)
。显示功能区的“数据”选项卡。
。单击过滤器工具。 Excel在A列标题的右侧添加了一个过滤器下拉箭头。
。单击向下箭头,然后选择数字过滤器|。之间。 Excel将显示“自定义自动筛选”对话框。 (请参见图1。)
。在“大于”或“等于”框中,输入65。 。在“小于或等于”框中,输入100。 。单击确定。 Excel将显示的内容限制为仅满足您在步骤4到6中指定的条件的那些行。 。选择显示的单元格。
。按Ctrl + C将单元格复制到剪贴板。
。选择单元格B1(或要在其中显示值的列B中的第一个单元格)。
。按Ctrl + V将单元格粘贴到列中。
。选择列A中的单元格之一。 。再次单击过滤器工具。 (功能区的“数据”选项卡仍应显示。)Excel删除您先前应用的过滤器。
您也可以使用B列中的公式得出所需范围内的值。一种简单的方法是将该公式放在单元格B1中:
将公式向下复制到B列中的必要位置,最后得到的值在65到100(含)范围内(包括“复制”)
如果该值超出此范围,则B列中的单元格将保留为空。
假设您不希望B列中有任何空单元格,则可以使用数组公式来获取值。如果您的值在A1:A500范围内,则在单元格B1中放置以下内容:
使用Ctrl + Shift + Enter进行输入,然后将公式向下复制到所需的范围。
当然,您可以使用基于宏的解决方案。如果您需要大量使用从外部来源检索到的数据来执行此任务,这些功能将很有帮助。以下是您可以使用的宏的简单示例:
=IF(AND(A1>=65, A1<=100),A1,"")
您可以通过在A列中选择要评估的单元格然后运行它来使用宏。它查看每个单元格并将该值复制到B列。A列中的原始值保持不变。
为了获得更大的灵活性,您可以依靠向用户询问下限值和上限值,如以下宏所示:
=IFERROR(INDEX(A$1:A$500,SMALL(IF(A$1:A$500>=65,ROW($1:$500)),ROW())),"")
运行宏之前,请选择要放置提取值的范围顶部的单元格。 A列中的任何内容均不受影响;仅将上下限之间的值复制到新位置。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
Sub ExtractValues1() Dim x As Integer x = 1 For Each cell In Selection If cell.Value >= 65 And cell.Value <= 100 Then Cells(x, 2) = cell.Value x = x + 1 End If Next cell End Sub
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本提示(13397)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。
Sub ExtractValues2() Dim iLowVal As Integer Dim iHighVal As Integer iLowVal = InputBox("Lowest value wanted?") iHighVal = InputBox("Highest value wanted?") For Each cell In Range("A:A") If cell.Value <= iHighVal And cell.Value >= iLowVal Then ActiveCell.Value = cell.Value ActiveCell.Offset(1, 0).Activate End If Next End Sub