質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1287閲覧

VBAの入力規則のカンマ区切り,重複対応について

SosMelancholy

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/03/23 02:13

お世話になっております。

なかなか、上手くいかず皆さんの知恵を貸してください。

【実現したいこと】
①VBAで、入力規則を設定したい
②入力規則に入れたいものの文字にカンマが入っている
③そのリストから重複を取り除きたい

例)
セルA1にapple,orange
セルB1にmelon
セルC1にmelon

この値をA2,A3,A4に適応させる場合

VBA

1With Range("A2:A4").Validation 2 .Delete 3 .Add Type:=xlValidateList, _ 4 Operator:=xlEqual, _ 5 Formula1:="=$A1:$C1" 6End With

上記のように、Formula1に範囲を指定した場合
重複した文字が入ってしまいます。

また、重複を取り除いた配列に変換させた場合
カンマ区切りを行うしかない(と思っています)ので
join(配列,",")のようにカンマ区切りとしてしまった場合

プルダウンのリストが
apple
orange
melon

とappleとorangeが分割されてしまい
どうすればいいか分からなかった為
質問させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

見かけが変わって良ければ「apple,orange」の部分を「apple-orange」に置換して登録し、選択されたときに「apple,orange」に変更してしまえば良いかと。

重複チェックについては、正規表現オブジェクトを使ってマッチングさせては?

AB
apple,orange
melon
melon
lemon
apple,orange
lemon
```VBA
Function 重複チェック(source As String, data As String) As Boolean
Dim regObj As New RegExp With regObj .Pattern = "(^|,)" & data & "(,|$)" .Global = True End With If regObj.Test(source) = True Then 重複チェック = True Else 重複チェック = False End If Set regObj = Nothing

End Function

Sub 重複テスト()
Dim testData As String
Dim listData As String
Dim rowNum As Long

listData = "" rowNum = 1 Do Until Cells(rowNum, 1).Value = "" testData = Replace(Cells(rowNum, 1).Value, ",", "-") If 重複チェック(listData, testData) = False Then If listData <> "" Then listData = listData & "," End If listData = listData & testData End If rowNum = rowNum + 1 Loop Debug.Print listData

End Sub

### 結果 apple-orange,melon,lemon

投稿2020/03/23 02:59

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DreamTheater

2020/03/23 03:02

補足 「ツール」⇒「参照設定」で、Microsoft VBScript Regular Expressions 5.5をチェックしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問