2017-06-14 7 views
1

私は、列をフィルタリングするExcelシートを持っています。列は、人の総体験に関連しています。値は5years 2Months、32Years 6Monthsなどです。すべての値はString形式です。私は次の機能が必要です。日付/時刻を文字列として含む列をExcelでフィルタリングする方法

    1. iは(iは形で作成する)テキストボックスに> 5を入力したとき、それは5未満(フィルタリング)のみ経験を表示する必要があります。私はvbaでこれを行う方法が必要です。

誰も手伝ってくれるか..?私はこれを行う方法が必要です。

Screenshot of the column

+0

「>」記号は「より小さい」を意味し、「より小さい」を意味しません。 '> 5 'と入力すると、5よりも大きくなく、5より大きくなることを意味します。演算子のシンボルを理解する上での基本的なこととは別に、 '5'を適用する単位を指定しません。年または月?このシートのデータ構造は非常に残念です。特に数字と単位テキストの間にスペースがないためです。そのような悪いデータを作成するのは誰ですか?なぜ?? – teylyn

+0

3ヵ月と2ヵ月間38ヵ月間のように、月ごとに整数を使用するほうがはるかに簡単ですが、少なくとも一貫した単位で期間を決定してください。数値で表現できる値のために、このようなテキストフィールドを使用することは、非常に賢明ではありません。テキストを数値にスプライスする複雑なVBAルーチンを見つけようとするよりも、期間の保存方法を変えるほうがずっと良いでしょう。 – teylyn

+0

本当にその間違いのために申し訳ありません@ teylyn私は意味して5年以上。その複雑なルーチンがあなたの手にありますか?整数の形でリストAに追加してから、5以下のすべての値を削除して、リストAの値を使ってExcelを再度フィルタリングします。これはVBAでは可能ですか? –

答えて

3

次のスクリーンショットを考えてみましょう。列aは年と月で不幸なテキストを持つ。

enter image description here

列Bは、年を分割します。列Cは月を分割します。 D列には、時間枠の合計月数が表示されます。これを使用すると、Excelテーブルに組み込まれているオートフィルタのフィルタオプションを使用して、任意の列でフィルタリングできます。次のように

式は以下のとおりです。

年:=MID([@total],1,FIND("Years",[@total])-1)+0

ヶ月間:ヶ月で=MID(SUBSTITUTE([@total],"Months",""),FIND(" ",[@total])+1,99)+0

期間:=([@years]*12)+[@months]

は今だけの列のbutttonsドロップダウンでフィルタを使用しますヘッダーがあり、VBAはまったく必要ありません。

関連する問題