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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

792閲覧

9~13桁の数字が並んだリストを別ブックにある数字と商品を参照して、本来のブックに反映させたいです。

ko1

総合スコア23

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2020/02/21 08:04

お世話になります。詰まっており頭を抱えております。何卒ご教示頂けますでしょうか。

ブックA シート1のC列10行目から数字のリストがあります。### ヘディングのテキスト

そのC列から先頭4文字を参照して、ブックB シート1 A列の4桁の数字と照らし合わせ、4桁が合致した時に、隣のB列にある商品名をブックAのA列10行目に反映して行きたいと考えています。

しかしブックA シート1のC列10行目からの数字のリストは

988436024665
3038404020176
35402010538
3038403029003
2403055449

上記のように9桁~13桁となっており、

9桁の場合は先頭に0を4個、10桁の場合は0を3個、11桁の場合は先頭に0を2個、12桁の場合は先頭に0を1個つけることで、13桁にし、4桁を抽出するようにしたいと考えております。!

丸投げと言われても、仰るとおりで恐縮ですが、アドバイス、ヒントなどご教示頂けましたら幸いです。

よろしくお願い申し上げます。

ブック

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

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

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

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

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

hoshi-takanori

2020/02/21 08:22

9桁の場合は先頭に0を4個つけて、先頭4桁を取り出すと常に 0000 になりますが、大丈夫でしょうか?
sinzou

2020/02/21 10:58

9桁の場合は先頭に0を4個は 0000123456789 ですね
sinzou

2020/02/22 12:48

あとは、13桁にして、対象の4桁が含まれているか? とか 0012も対象にする?
ko1

2020/02/28 04:23

皆様ありがとうございます。大変恐縮ですが、123456789という9桁があった場合は0001とさせて頂きたいです。何卒よろしくお願い致します。
guest

回答2

0

あえてマクロは使わずに。
ブックAのB1に以下の数式。

Excel

1=IFERROR(VLOOKUP(LEFT(RIGHT("000000000000"&A1,13),4),'[ブックB.xlsx]Sheet1'!A:B,2,FALSE),"")

あとはB1を行数分コピペ。
ブックBのファイル名が異なるなら適宜修正してください。

投稿2020/02/21 09:17

ttyp03

総合スコア17000

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

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

radames1000

2020/02/27 06:21

この考え方って頭が柔らかくて良いですね!参考にさせていただきます。
ko1

2020/02/28 04:56

ありがとうございます。1行で収まってしまうとは思いもよりませんでした。ただ私の説明不足で申し訳ありませんが、 1234567891012の13桁の場合は1234 123456789101の12桁の場合は0123 12345678910の11桁の場合は0012 1234567891の10桁の場合は0001 123456789の9桁の場合は数字が足りないので空白や★などがつけれると非常にありがたいです。 何卒よろしくお願い致します。
ttyp03

2020/02/28 05:18

こんなんでしょうか。 =IF(LEN(A1)>9,IFERROR(VLOOKUP(LEFT(RIGHT("000"&A1,13),4),'[ブックB.xlsx]Sheet1'!A:B,2,FALSE),""),"★")
ko1

2020/02/28 06:31

ありがとうございます。ttyp03様の関数は、9桁の場合は★を出し、それ以外は空白という事でしょうか?
ttyp03

2020/02/28 06:32

9桁以下の場合は★です。10桁以上のときは4桁で検索して一致すればその値、なければ空白です。
guest

0

9桁だと0000になるのは問題ないです?参考にどうぞ。

Excel

1=TEXT(LEFT(C10,LEN(C10)-9),"0000")

※これだと9桁は何も表示されません。

投稿2020/02/21 08:25

radames1000

総合スコア1925

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

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

coco_bauer

2020/02/21 08:35

ブックB シート1 A列の4桁の数字に"0000"が含まれていれば、9桁の数字の全部に"0000"の商品名が入ることになりますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問