Excelスプレッドシートに「AP」列があり、各セルに次のような値が含まれています。
5358 161043 22344 8444 103145 69221044
「5358 161043 22344 8444 103145 69221044」はすべて 1 つのセル (この場合は AP2) です。混乱しているのはわかっていますが、他の誰かから継承したものなので、整理しようとしています。
6623 から 12756 までの数値範囲内の値を抽出する方法が必要です。この範囲外のすべての値を削除する検索および置換コマンド、または問題の値を別の列にコピーする関数のいずれかを使用できます。
答え1
ダミーデータを作成し、シートの列 A に入力しました。列 B では、次の数式を使用しました。
=IF(AND(A1>=$L$35,A1<=$L$36),"Yes","No")
これは、対象範囲内の値に対して「はい」を返す単純なフィルターです (セル L35 と L36 にドロップしました)。
次に、これら 2 つの列を選択し、フィルターをオンにします。
次に、[ホーム] タブで [編集] リボンに移動し、[検索と選択] を選択します。[特別なオプションへ移動...] というオプションを選択します。
「表示セルのみ」というオプションを選択し、「OK」を押します。
[コピー] を押すか、CTRL-C を使用します。これにより、必要なデータを含む行のみが選択されます。
ここで、空白のシートに貼り付けると、希望する日付範囲に対応するデータのみが貼り付けられます。注: この例では、ヘッダーの行 1 を空白のままにしなかったため、フィルターを適用すると、「いいえ」が 1 つ残りました。この残りを削除するか、先頭に空白行を残して、そのようなことが起こらないようにします。
答え2
まず、標準モジュールに次のユーザー定義関数を入力します。
Public Function GrabData(r As Range) As String
Dim cel As Range, v As String, a, d As Double
GrabData = ""
For Each cel In r
v = cel.Text
arr = Split(v, " ")
For Each a In arr
If IsNumeric(a) Then
d = CDbl(a)
If d > 6622 And d < 12757 Then GrabData = GrabData & " " & a
End If
Next a
Next cel
End Function
次に、データがある場合AP1を通してAP3別のセルを選択して次のように入力します。
=GrabData(AP1:AP3)
例えば:
ご覧のとおり、値はスペースで区切られた入力と同じように文字列です。