ロバートは、列Aに1から100の範囲の一連の数値を持っています。彼は、65から100までの値のみを抽出し、それらを列Bに配置したいと考えています。これを簡単に行う方法があるかどうか疑問に思います。

簡単に言うと、番号のリストを並べ替えてもかまわないのであれば、非常に簡単な方法があります。次の手順に従ってください:

。列Aのセルを選択します(数値を含むセルの1つである限り、どのセルを選択してもかまいません。)

。リボンの[データ]タブを表示します。

。 [並べ替えとフィルター]グループで、[最小から最大に並べ替え]ツールをクリックします。

Excelは、列内のすべての数値を並べ替えます。

。列Bに入力する番号を選択します。

。 Ctrl + Xを押して、セルをクリップボードに切り取ります。

。セルB1(または値を表示する列Bの最初のセル)を選択します。

。 Ctrl + Vを押して、セルを列に貼り付けます。

それでおしまい;これで、目的のセルが列Bに配置されました。単にセルをコピーしたい場合は、手順5で代わりにCtrl + Cを押すことができます。

列Aの値を元の順序(移動する値を差し引いたもの)で保持する必要がある場合は、列Bを「プレースリテーナー」列として使用することで実行できます。列Aの最初の値の右側に値1を入力し、次に列Bの値の下に2を入力し、次に3を入力し、列Aの各値が列Bの対応する値を示すまで続けます。番号の場所。次に、次の手順に従います。

。列Aのセルを選択します(数値を含むセルの1つである限り、どのセルを選択してもかまいません。)

。リボンの[データ]タブを表示します。

。 [並べ替えとフィルター]グループで、[最小から最大に並べ替え]ツールをクリックします。

Excelは、列内のすべての数値を並べ替えます。

。移動する列Aの番号と、列Bの右側の番号を選択します。

。 Ctrl + Xを押して、セルをクリップボードに切り取ります。

。セルD1を選択します。 (列Cを空白のままにする必要があるため、セルD1を選択することが重要です。)

。 Ctrl + Vを押して、セルを列DとEに貼り付けます。

。列Bのセルを選択します。

。リボンの[データ]タブを表示します。

。 [並べ替えとフィルター]グループで、[最小から最大に並べ替え]ツールをクリックします。

Excelは、列Bの値に基づいて列のすべての数値を並べ替えます。

。 E列のセルを選択します。

。リボンの[データ]タブは引き続き表示されます。

。 [並べ替えとフィルター]グループで、[最小から最大に並べ替え]ツールをクリックします。

Excelは、列Eの値に基づいて列のすべての数値を並べ替えます。

。列B、C、およびEを削除します。

この時点で、列Aと列Bの値は、すべて列Aにあったときからの元の順序を反映しています。

セルを移動する別の方法は、Excelのフィルタリング機能を使用することです。次の手順に従ってください:

。列Aのセルを選択します(数値を含むセルの1つである限り、どのセルを選択してもかまいません。)

。リボンの[データ]タブを表示します。

。フィルタツールをクリックします。 Excelは、列Aヘッダーの右側にフィルタードロップダウン矢印を追加します。

。下矢印をクリックして、[数値フィルター]、[数値フィルター]の順に選択します。の間に。 Excelに[カスタムオートフィルター]ダイアログボックスが表示されます。 (図1を参照)

。 [大なり記号]ボックスに65と入力します。

。 [以下]ボックスに100と入力します。

。 [OK]をクリックします。 Excelは、表示される内容を、手順4〜6で指定した条件を満たす行のみに制限します。

。表示されているセルを選択します。

。 Ctrl + Cを押して、セルをクリップボードにコピーします。

。セルB1(または値を表示する列Bの最初のセル)を選択します。

。 Ctrl + Vを押して、セルを列に貼り付けます。

。列Aのセルの1つを選択します。

。もう一度フィルターツールをクリックします。 (リボンの[データ]タブは引き続き表示されます。)Excelは、以前に適用したフィルターを削除します。

列Bの数式を使用して、目的の範囲内の値を引き出すこともできます。これを行う簡単な方法は、この数式をセルB1に配置することです。

=IF(AND(A1>=65, A1<=100),A1,"")

列Bに必要なだけ数式をコピーすると、65から100までの範囲の値が「コピー」されます

値がこの範囲外の場合、列Bのセルは空のままになります。

列Bに空のセルが必要ないと仮定すると、配列数式を使用して値を取得できます。値がA1:A500の範囲にある場合は、セルB1に次のように配置します。

=IFERROR(INDEX(A$1:A$500,SMALL(IF(A$1:A$500>=65,ROW($1:$500)),ROW())),"")

Ctrl + Shift + Enterを使用して入力し、数式を好きなだけコピーします。

もちろん、使用できるマクロベースのソリューションもあります。これらは、外部ソースから取得したデータを使用してこのタスクをかなり実行する必要がある場合に役立ちます。以下は、使用できるマクロの簡単な例です。

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

列Aで評価するセルを選択して実行することにより、マクロを使用します。各セルを調べて、値を列Bにコピーします。列Aの元の値は変更されません。

柔軟性を高めるには、次のマクロに示すように、ユーザーに下限値と上限値を要求することをお勧めします。

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

マクロを実行する前に、抽出した値を配置する範囲の上部にあるセルを選択します。列Aの内容は影響を受けません。下限と上限の間の値のみが新しい場所にコピーされます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13397)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。