- ベストアンサー
Excelの相談
閲覧くださりありがとうございます。 突然ですが Cのセルにはプルダウンから名前を選択できるようにしてあり FのセルにはCのセルにあるプルダウンから名前を選んだ人のIDが紐づく様にVLOOKUPを組んでいます。 Cのセルのプルダウンには無い 好きな記号を名前の後ろに付けたいという 我儘な事は出来るのでしょうか…。 例 山田を選択⇒IDは235689 山田①にしたいがプルダウン上には無い 恐らくVLOOKUPは反応しないため♯N/Aになる。 解決方法ありますでしょうか……
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- SI299792
- ベストアンサー率47% (780/1631)
VBA だと関数と違ってコピペする手間が不要なので、私もVBA を上げます。私は他の方の様な長いプログラムは作れないので、短くしました。 A列 D2: 午前 E2: 午後 F2: 放課後 G2: 夜 入力しておいて下さい。 Option Explicit ' Sub Macro1() Dim Cell As Range Dim ROut As Long Dim Match As Variant Dim OutData As String Dim Colu As Integer ' Set Cell = Cells(Rows.Count, "A").End(xlUp).Offset(1) ROut = 2 Application.ScreenUpdating = False ' For Each Cell In Range("A2", Cell) Match = Application.Match(Cell, [2:2], 0) ' If OutData = "" Then ElseIf IsDate(Cell) Or Not IsError(Match) Or Cell = "" Then ' Cells(ROut, Colu) = Mid(OutData, 2) OutData = "" End If ' If IsDate(Cell) Then ROut = ROut + 1 Cells(ROut, "C") = Cell ElseIf Not IsError(Match) Then Colu = Match Else OutData = OutData & vbLf & Cell End If Next Cell End Sub
お礼
- heisukewada
- ベストアンサー率57% (93/162)
名前の後に続く記号を、手入力するのなら、 データの入力規則の「エラーメッセージ」タブで ”無効なデータが入力されたらエラーメッセージを表示する”の、チェックを外して「OK」ボタンをクリックします。 これで、リスト以外の文字も入力できます。 そのうえで 山田一郎① を、検査値として コードを引っ張ってくるために 漢字以外の文字を排除する関数をVBAを使って作成します。 Function RemoveNonKanji(text As String) As String Dim result As String Dim i As Integer Dim char As String result = "" For i = 1 To Len(text) char = Mid(text, i, 1) ' 漢字の範囲を指定してフィルタリング If char Like "[亜-熙一-龠々]" Then result = result & char End If Next i Debug.Print "Input: " & text Debug.Print "Result: " & result RemoveNonKanji = result End Function 例えば C3 に ”山田一郎①” が、入力されていた場合 D3 に =RemoveNonKanji(C3) と、入力すると D3には ”山田一郎” と、表示されます。 Sheet2 に A列に名前 B列に コード の表があるとして なので、VLOOKUPは不得意ですから F2 に =INDEX(Sheet2!B:B, MATCH(RemoveNonKanji(C2),Sheet2!A:A, 0)) の式を入力すれば、コード ”235689” を、引っ張ってくるはずです。
お礼
- SI299792
- ベストアンサー率47% (780/1631)
- SI299792
- ベストアンサー率47% (780/1631)
お礼