• ベストアンサー

Excelの相談

閲覧くださりありがとうございます。 突然ですが Cのセルにはプルダウンから名前を選択できるようにしてあり FのセルにはCのセルにあるプルダウンから名前を選んだ人のIDが紐づく様にVLOOKUPを組んでいます。 Cのセルのプルダウンには無い 好きな記号を名前の後ろに付けたいという 我儘な事は出来るのでしょうか…。 例 山田を選択⇒IDは235689 山田①にしたいがプルダウン上には無い 恐らくVLOOKUPは反応しないため♯N/Aになる。 解決方法ありますでしょうか……

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.7

C2: 山田①(手入力) これで「山田」を検索でしょうか H2~H9に名前一覧 I2~I9にID一覧 があるとして =LOOKUP(1,1/FIND(H$2:H$9,C2),I$2:I$9) 範囲は変更して下さい。 名前領域に空白は許されません。開いている所は#等を入れておいて下さい。

atm1123
質問者

お礼

お礼が遅くなり申し訳ございません。1番初めから幾つも提案してくださりありがとうございます!複数名の方が一斉に使うシートなので関数の方が有難かったのです😭感謝です!

Powered by GRATICA

その他の回答 (5)

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.5

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

atm1123
質問者

お礼

回答くださりありがとうございます!他の方も複数使うシートなのですが共有とか出来る感じでしょうか…?🤔

Powered by GRATICA
回答No.4

名前の後に続く記号を、手入力するのなら、 データの入力規則の「エラーメッセージ」タブで ”無効なデータが入力されたらエラーメッセージを表示する”の、チェックを外して「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” を、引っ張ってくるはずです。

atm1123
質問者

お礼

質問内容を読解して下さりありがとうございます😭やりたいことはそうなのです😭 ただ私だけなら良かったのですが、複数名が使うシートなので共有等が可能でしょうか…。余り詳しくなくご迷惑おかけします……。

Powered by GRATICA
  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.3

手間をかけていいなら、条件付き書式を使うやり方があります。 C2以下、プルダウン範囲を選択。 条件付き書式、新しいルール。 指定の値…、次の値に等しい、「山田」 書式。表示形式、ユーザー定義「@①」 OK。OK。 この地獄のような作業を人数分延々と行う。 名前が変更になれば、再設定しなければなりません。 マクロでも使わない限り、実用的でないと思います。

atm1123
質問者

お礼

ご回答くださりありがとうございます!こちらの案出たはしたのですがやっぱり地獄みたいな作業で却下となったのです😭

Powered by GRATICA
  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.2

山田なら①、南波なら②の様に、プルダウンによって記号を変えたい場合、 そもそもそのようなプルダウンはできません。 J列に記号を並べる。 C列の列幅を縮める(プルダウンできるサイズ)。更にフォントを白にして見えなくする。 D2: =C2&IFERROR(VLOOKUP(C2,H:J,3,0),"") これでD列に名前+記号が表示されます。これ以外方法はないと思います。

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.1

詳細が判りません。画像の様な表で C2: データの入力規則、リスト =$H$2:$H$11 F2: =VLOOKUP(C2,H:I,2,0) が入っているとします。 記号が①固定でいいなら 表示形式、ユーザー定義「@①」 で「山田①」にできます。

関連するQ&A

専門家に質問してみよう