2013-01-16 5 views
5

Excel 2007スプレッドシートに、データを「COM [1-4]または1-65535」の値に制限する列があります。 Excelにこの値のセットを適用させるにはどうすればよいですか?あなたは正規表現をサポートするカスタムVBA関数(またはマクロ)を作成する必要がありますExcelのデータ検証 - 正規表現ですか?

TY、 フレッド

+0

あなたの基準に合った値だけを他の列に表示するにはどうしたらいいですか?あなたは範囲の一致または完全一致を探していますか?一致させる値の例と、近いが一致しない値の例を挙げることができますか? – jimbojw

+0

値がCOM1、COM2、COM3、COM4、またはint 1-65535 –

答えて

6

これは1回限りの問題であれば、複雑なFIND()/ MID()/ SUBSTITUTE()などを使用して解決できます。 (これは私の仕事です)、Excelの機能が満載の5行のセルを見つめない限り、これはお勧めしません。

編集:あなたが持っているか、提供するために、さらに情報が必要な場合私はこれを更新します。

編集:ここでは、Excelの関数として正規表現を使用することができます方法は次のとおりです。

関数REFind関数(文字列、論理値= trueとオプションblnCaseとして文字列、strPatternとしてstrValueに)ブール

として、
Dim objRegEx As Object 
Dim blnValue As Boolean 

' Create regular expression. 
Set objRegEx = CreateObject("VBScript.RegExp") 
objRegEx.Pattern = strPattern 
objRegEx.IgnoreCase = blnCase 

' Do the search test. 
blnValue = objRegEx.Test(strValue) 

REFIND = blnValue End Function 

エンド機能

+0

のいずれかになりますか? –

+0

私はもっと具体的にすべきです。私は関数を作成しました。私はマクロス(彼らが彼らの場所を持っている)にはあまり気にしませんが、あなたは同じカスタムVBAコードをたくさん使う必要があります。上記のコードを添付します。 – Jonathan

+0

完璧!なぜ正規表現が示唆されたときでも誰もが正規のExcel関数を提案しているのか分かりません。 – foochow

5

ない非常に柔軟な、しかし、あなたはカスタムを使用することができますこの式、:

=OR(AND(LEN(A2)=4,LEFT(A2,3)="COM",MID(A2,4,1)>="1",MID(A2,4,1)<="4"),OR(AND(A2>=1,A2<=65535))) 

私は、これはあなたがあなたのコメントに指定されたものにそれを絞り込むと思います。

+0

+1 RegExpは、VBAを使用せずに達成できるものについては過剰です – brettdj

3

下記のリボン>>データ>>データ検証で使用してください。

を許可:リスト ソース不要VBA、正規表現や数式で働いていた標準のデータ検証を使用して、この特定の問題については

=OR(AND(E5 >= 1, E5 <= 65535), E5 = "COM1", E5 = "COM2", E5 = "COM3", E5 = "COM4") 
0

:[許可=カスタムおよび式に以下を追加します。 "COM1、COM2、COM3、COM4,​​1-65535"

これはまた、ユーザーを助けるためのセルのドロップダウンリストを提供します。