• ベストアンサー

納品書の宛名を簡単入力する方法

顧客シートの電話番号下4桁が一致した行の名前を検出しリストボックスに表示したいのですが設定の仕方がわかりません。 電話番号下4桁ですので一致するセルが複数になり関数vlookでは対応できません。 初心者です。簡単な方法ご伝授ください。よろしくお願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

#3です   A      B          C   D    E 1 検索番号 電話番号     名前 検索値 検出された名前 2        03-1234-5678 伊藤    3        03-2345-6789 斉藤       4        03-3456-7890 佐藤       5        06-1234-5678 首藤 6        06-2345-6789 江藤  7        06-2345-5678 藤田 上のような表を想定しています ただ、#3では項目名を想定していない数式だったので 項目名(1行目)を考慮した式へ変更しています A2へ =COUNTIF($B$2:B2,"*-"&$D$2) A3~A7へコピー(データが100行あれば:A3~A100までコピーする) E2へ =IF(COUNTIF(A:A,ROW(A1))=0,"",VLOOKUP(ROW(A1),$A$2:$C$7,3,0)) E3~E5までコピー(重複番号は最大4つなので) 注意 データが100行の場合(実際のデータ行数が分らないので、上の数式は上の表を対象(データ2~7行)とした数式です) E2の数式を =IF(COUNTIF(A:A,ROW(A1))=0,"",VLOOKUP(ROW(A1),$A$2:$C$100,3,0)) と書き換えて再度、E3~E5までコピーしてください 後は、D2(検索値)へ検索したい電話番号の下4桁を入力すれば E2以下最大4つまで検索できます 例 D2へ 5678 と入力 E2以下、伊藤、首藤、藤田と順に表示されます >電話番号は、B列に下4桁で揃えました。 必要ありません、#3の最初にも書きましたが、#1の回答は無視してください 電話番号は03-1234-5678か1234-5678で対応しています >必要な行はいくつでどの列のどの行にコピーすればよろしいでしょうか。 知りたいのは、回答者のほうです もともと質問の仕方が良くありません 最初の質問で表の構成やデータの行数の説明が文章や画像であれば 回答者のほうで上のような表や説明は不要なはず

noname#186118
質問者

お礼

質問の仕方が悪くてお悩ませして申し訳ございません。 1,500件の名簿からなんとか4桁の数字だけで納品書に名前を打ち込みたいともがいてきました。  質問の仕方が良くなくてすみませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

複数ですか 前回の解答は忘れてください A列:検索番号、B列:電話番号、C列:名前、D1:検索値、E1:検出された名前とします 電話番号の前に1列挿入し 次の数式を設定します(A列) =COUNTIF($B$1:B1,"*-"&$D$1) 必要な行までコピーします E1に、次の数式を設定します E1 =IF(COUNTIF(A:A,ROW(A1))=0,"",VLOOKUP(ROW(A1),$A$1:$C$20,3,0)) 重複する最大値分下方向へコピーしてください D1:検索値へ検索したい電話番号下4桁入力してください E1に検出された名前が表示される 一致する電話番号が複数ある場合は下方向に名前が表示されます 以上参考まで

noname#186118
質問者

補足

ご回答ありがとうございました。申し訳ございませんが、もう少しお教えいただけないでしょうか。 > =COUNTIF($B$1:B1,"*-"&$D$1) 必要な行までコピーします 電話番号は、B列に下4桁で揃えました。重複番号は最大4つです。  必要な行はいくつでどの列のどの行にコピーすればよろしいでしょうか。  色々試してみたのですが、どうしてかE1が空白になってしまいます。 どうかよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

>簡単な方法ご伝授ください。 簡単な方法でもないですが… ワークシートの値が変わった時に、実行されるマクロを利用して、リストから該当するものをピックアップして、入力規則のリストに代入するというものです。 リストの位置や入力欄などは、サンプルとして適当に仮定しています。 意味不明の場合は、無視してください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ListRng As Range, rw As Long, col As Long, i As Integer Dim reslt As String, num As String, tmp As String Const comma = "," Const ListAddr = "A3:B7" '//顧客リストの位置 Const target_column = "D" '//番号入力欄の列 Const target_row = 3 '//番号入力欄の最小行番号 col = Columns(target_column).Column If Target.Column <> col Or Target.Row < target_row Then Exit Sub If Target.Text = "" Then Exit Sub Set ListRng = Range(ListAddr) num = Right(Target.Text, 4) result = "" For rw = 1 To ListRng.Rows.Count  If Right(ListRng.Cells(rw, 2).Text, 4) = num Then   tmp = ListRng.Cells(rw, 1)   Do While InStr(tmp, comma) > 0    i = InStr(tmp, comma)    tmp = Left(tmp, i - 1) & "," & Right(tmp, Len(tmp) - i)   Loop   result = result & comma & tmp  End If Next rw If result <> "" Then  With Cells(Target.Row, Target.Column + 1).Validation   .Delete   .Add Type:=xlValidateList, Formula1:=Right(result, Len(result) - 1)  End With End If End Sub

noname#186118
質問者

お礼

ご回答ありがとうございました。 コピーして動かしてみたのですが、最初に準備する表の作り方がわからず”end sub"が必要ですと、エラーが出て動いてくれません。  どうすれば画像のような結果が出るか勉強してみます。御礼が遅くなりまして申し訳ございません。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

電話番号の後に1列挿入し 電話番号下4桁を取出しておく =RIGHT(電話番号,4) この列をvlookupで検出するのが 簡単な方法だと思います

noname#186118
質問者

補足

ご回答のお礼が遅くなり申し訳ございません。ご回答ありがとうございました。 この方法を試してみたのですが563-1234、564-1234と 下4桁2つ同じ番号がある場合二つをリストに載せたいのですが、1つしか検索してくれません。 2つとも検出する方法はございませんでしょうか。  再度よろしくお願い申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELの桁数の変更を教えてください。

    顧客情報を2つのシートで管理しており、一つのシートのみに、 顧客番号をふっているので、もう一つのシートにも、その顧客番号をvlookupでひっぱろうとしたのですが、電話番号の下1桁が違っていたりして、マッチングができませんでした。 で、マッチングをさせるために、下2桁を切り落とし、桁数を変えることはかのうでしょうか。電話番号の下2けたを落としてvlookで引っ張れば、適合するものが多くなるように思います。 たとえば、0120-12-1234とかりに番号があった場合、ハイフンをトリムして、120121234とおきかえて、下ふたけたをきりおとして、1201212と9ケタから7桁の数字にする方法です。 よろしくお願いいたします。

  • エクセルで納品書を作成する

    納品、請求書をエクセルで作成しようと始めました。 第一歩でつまずきましたので教えてください。 シート1に納品書の雛形を作りシート2に顧客名簿一覧を作る。 シート1名前に電話番号(下4桁)を打ち込むと該当顧客の シート2の内容がシート1のテキストボックスに表示される。 選択すると、シート1名前が電話番号の顧客に変わる。 こんな風にしたいのですが、シート2の内容をテキストブックにコピーする方法がわかりません。 どうか初心者にわかるようにお教えください。

  • エクセルの関数の設定の仕方を教えてください。

    エクセルで電話対応履歴を作ろうとしています。 顧客リストがすでに存在しているので、それを利用して、データを抽出したいと思っています。 同一BooK内に、シートA(電話対応履歴用のシート)と、シートB(顧客リストのシート)を入れました。 電話対応履歴の項目の基本情報部分を顧客リストから抽出して入力したいと思っています。 シートAにシートBにある項目の一部を表示できるセルを設定しています。 シートAの名称部分に対応相手の名前を入力し、入力した文字列をシートBの顧客名の列から検索して、一致するものがあれば、その文字列と一致した行にある別の項目を表示して、一致しない場合は、新しくデータ入力できるように、空欄にしておくという形にすればいいと思っています。 IF、LOOKUPなどの関数を利用したらいいことまではわかっているのですが、どうやってつなげれば、正しく表示されるのかがわかりません。ネット上の説明を見たりしているのですが、エラーになってしまい、顧客リストにある情報を入力しても、エラーのままです。 並べ方が悪いのだとは思うのですが、どのように複数の関数をつなげて使えばいいかがわかりません。 できれば、例でかまわないので、並べ方を教えてください。 参考できる並べ方がわかれば、応用できると思うのでよろしくお願いします。 基本的に自己流でいろいろいじって覚えるぐらいの知識しかありませんが、何とか自分で作成して電話対応を自分でうまく処理したいと思っています。 どうかよろしくお願いします。

  • セルがある同じ行のリスト番号を反映して印刷する

    エクセル2003を使っています。 (1)顧客リストを作りました。 1.氏名 2.住所 3.電話番号 4.メールアドレス… (2)別シートに、この顧客データを1件につき1枚に印刷する印刷シートを作りました。 (1)にリスト番号を入力すると(2)のシートに反映するようにvlookupで反映できたのですが、「いちいちリスト番号を入力」しなければならず、可能であればリストにデータを入力している段階でリスト番号が反映されそのまま(2)のシートが印刷できるようにしたいのです。 何かいい方法はありませんか? 「セルがある行と同じ行にあるリスト番号を反映させる」という書き方でご理解いただけますか? よろしくお願いします。

  • あるセルに文字が入力されている行だけを別シートにコピーする方法

    ある一つのセルに文字が入力されている行だけを別シートに 自動でコピーする方法はありませんでしょうか? 顧客リストをエクセルで管理しているのですが、 「休眠顧客」をそこから自動で抜き出す方法を探しています。 たとえば、ある列を「リリース」とか「アプローチ中止」などの 項目にし、そのセルに●印が入っている行だけを自動で、別シートに 反映させたく思っています。 自動で「休眠顧客リスト」ができたらいいなって思っています。 どなたか、お教えくださいますよう、お願いいたします。

  • 重複入力の回避のVBAをご教示ください

    6行目のセル(6行、C列)に顧客番号を入力し、F列以降に、セル(6行、C列)の顧客番号の内容を入力しています。   その入力時に、顧客番号の重複入力を避けるためのチェック及び対処処理をご教示お願い致します。     (1)・セル(6行、C列)に顧客番号を入力し、F列からH列に、セル(6行、C列)の顧客番号の内容を入力する。     (2)・セル(7行、C列)に顧客番号を入力し、F列からH列に、セル(7行、C列)の顧客番号の内容を入力する。       (イ)・セル(7行、C列)に顧客番号を入力し、エンターキーを押した時点でセル(6行、C列)の顧客番号と重複していなかチェックする           ●重複していない場合は、カーソルをセル(7行、F列)へ移動させる           ●重複している場合は、「同じ番号があります」とメッセージボックスを表示する。               メッセージボックスのキャンセルボタンをクリックするとセル(7行、C列)の重複番号が削除されカーソルはセル(7行、C列)へ     (3)・セル(8行、C列)に顧客番号を入力し、F列からH列に、セル(8行、C列)の顧客番号の内容を入力する。        (イ)・セル(8行、C列)に顧客番号を入力し、エンターキーを押した時点でセル(6行、C列)とセル(7行、C列)の顧客番号と重複していなかチェックする           ●重複していない場合は、カーソルをセル(8行、F列)へ移動させる           ●重複している場合は、「同じ番号があります」とメッセージボックスを表示する。               メッセージボックスのキャンセルボタンをクリックするとセル(8行、C列)の重複番号が削除されカーソルはセル(8行、C列)へ     (4)・セル(9行、C列)に顧客番号を入力し、F列からH列に、セル(9行、C列)の顧客番号の内容を入力する。        (イ)・セル(9行、C列)に顧客番号を入力し、エンターキーを押した時点で、セル(6行、C列)とセル(7行、C列)とセル(8行、C列)の顧客番号と重複していなかチェックする           ●重複していない場合は、カーソルをセル(9行、F列)へ移動させる           ●重複している場合は、「同じ番号があります」とメッセージボックスを表示する。               メッセージボックスのキャンセルボタンをクリックするとセル(9行、C列)の重複番号が削除されカーソルはセル(9行、C列)へ     (5)・(1)~(4)を1セットとお考え下さい           ●10行から13行の4行を1セットとして、セル位置は変わりますが、(1)~(4)の処理をしたい。           ●最終  702行から705行まで、(1)~(4)の処理をしたい。 宜しくお願い致します。

  • エクセルでの入力規則と自動入力について

    質問の前に検索をしてみたのですが、 似たようなものが見つからなかったので、質問させてもらいます。 シート2に名前→定義で「登録者名」と作り シート1での入力を入力規則を使い、リスト(コンボボックス) を設定しました。 シート2では 登録者名 会員番号 AAA  1234 BBB  5678 CCC  9101 DDD  1112 と名前の横のセルには会員番号を作っています。 そこで質問ですが、 シート1で登録者名を入力規則のリスト(コンボBOX) で選択して入力した場合、 隣のセルに自動で会員番号が表示できるような関数などは ないでしょうか? VBAなどはできないので、できれば関数でやりたいと思います。 【シート1】    A      B 1 AAA ▼   1234(←この1234を自動で表示させたい) 2     ▼ 3     ▼ 説明不足かも知れませんが教えてください。 よろしくお願いします。 エクセル2003です。

  • エクセル関数の書き方、入力方法

    エクセル関数の初心者です。関数の書き方で下記の内容について教えて下さい。 例えば、1行のセルA1~P16の表に入力された数値(1~3桁)で、少ない数値を5個を自動的に抽出し、その平均値を出す関数の書き方が分かりません。 但し、表中に同じ少ない数値が複数有る場合、その複数を含め5個抽出する式としたいのですが、どのような関数とすればよいでしょうか。

  • Excelの入力について

    エクセルで、A行に各状況、B行にその内容を記入してある下記のような表を作成しました。 別のシートのセルに、各状況をリストで選んで、その内容を隣りのセルにリストで表示できるような関数はありますか。 例えば、リストから「い状況」を選ぶと、となりのセルには、「あああああ」「いいいいい」「ううううう」のみのリストが表示され、選べるようにしたいのです。 「ろ状況」であれば、「えええええ」・・・のみリストが表示されるような VLOOKUPだと、最初の1行目しか表示されなくて困っています。 なにか方法はが有れば、教えていただけませんか? 列や、行に番号を入力してもかまいません。 い状況 あああああ い状況 いいいいい い状況 ううううう ろ状況 えええええ ろ状況 おおおおお ろ状況 かかかかか は状況 ききききき は状況 くくくくく は状況 けけけけけ

  • エクセルの質問です。

    エクセルの質問です。(エクセル2003) 6桁の数値(例えば120821)を、別のシートのセルにVLOOK関数で読み込んだ時 そのセルに日付(H24.8.21)として表示出来るようにしたいのですが、 方法はありますか?

このQ&Aのポイント
  • iPad第9世代を使用し、スキャンスナップIX1600を利用してPDFにOCR処理をしてコピぺが出来る方法を紹介します。
  • 参考書をPDFに変換することはできますが、OCR処理ができないと言葉の検索やコピペができない問題を解決する方法をご紹介します。
  • スキャンスナップIX1600を使ってiPadでOCR処理を行い、PDF内のテキストを簡単に検索したりコピペしたりする方法について解説します。
回答を見る