![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
2つのシートからVlookupを使って、データを呼び出そうと思っています。しかし、各シートの法人各表記が下記例のように
"マエカブ"、"ウシロカブ"、"スペースあり"、"スペースなし"と表記がシート毎にマチマチで違うのと、どちらも7000行以上の膨大なデータ量(MBクラス(?))になっているため、手作業でコツコツやるには時間が足りません。
過去回答例を見てデータ>区切り位置で法人各を取ってからvlookupをしようと思っていますが、データを揃える有効な方法を教えてください。※そもそもvlookupを使うことが間違いなのか・・・それも判断できないため、確実にできれば他の方法でも構いません。
(例)
【シート1の表記】
株式会社OKWAVE
OKwave(株)▲本社 ←▲はスペースを表しています
【シート2の表記】
(有)OKwave
オーケーwave(合)
法人格は置換でどちらか一方に合わせることが可能ですが、
その先でつまづいています。。。
明日夕方が締め切りで、かなり焦っていますが、どうぞよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
こんにちは。
もう時間切れだとは思いますけれど、一言書かせていただきます。
表に出る表記は、勝手に変えてはいけないです。しかし、表計算独特というか、検索の時に使用するデータの基準というものが、前株なのか、後株なのかというよりも、そこに一定の基準を与えて、並べ替えていくことをしないと、その表の利用度としてはかなり下がってしまうと思いますし、文字数を減らして処理させるというのは、表計算の常套手段です。その時に、おおむね、(株)と(有)は、後に回すというのがということをします。そうしないと、並べ替えが不自然になるからです。また、法人格を切り離すと、検索に、VlookUpなどを使う関係で、検索が不自由になってしまいます。
いずれにしても、正式名称とは別に、集計用の名称が存在するという考え方をします。それは、経験的もので、そのような考え方で、#3のマクロは作られています。表計算のみでは、オフコンやデータベースソフトのようには行きません。また、移植しようにも、1~2日で間に合うような仕事ではありません。
表に出る資料と、内部資料とは別問題です。そうでもしないと、いちいち、相手まかせや入力者の都合で変換されたものに、従ったら、とても集計や統一的な作業が出来ません。すでに、そうした状況に陥ってしまったことは、精度として格段に落ちてしまっていますから、データとしての信頼性も落ちてしまっていますが、それは、もう言ってもしょうがないことです。
本来は、大分類-中分類-小分類というようなコードの別け方をして、コードを確定して統一させてしまうというのが、通例だと思いますが、表計算というものは、あまり、そういう方式には向かないようです。また、相手先が、本社なのか支店なのかの区別というのは、営業割り振りの場合は、そう簡単には統一できるわけではありません。
これは、本来、データベースのマスターで、オートコレクトにして出す方式やイニシャルで出すならならともかく、Excelのような表計算ですと、あまりうまくいきません。
お礼が遅くなりました。
おっしゃる通り、表計算ソフトを使っての管理に無理があり過ぎると思いました。全社で使用するSAPのような基幹ソフトと営業独自のアプリ間のデータに整合性が取れていないため、更にエクセルで・・・と本末転倒なことを求められ、せざるを得ない状況でした。
とりあえず、部署内マスターとして利用できるよう、コツコツと作業を始めました。
No.4
- 回答日時:
すでに30日になってしまいましたが……。
法人格は「置換」して表記を統一するということで、どこに問題が生じるのかなぁ? 統一されていれば、VLOOKUPでもエラーは出ないですよね。VLOOKUPで別ブックから担当者とかを引っ張りだしたら、[形式を選択して貼り付け]コマンドで、「値」に変換しておいたほうがいいと思うけど。
一方で「■本社」みたいなのは、会社名じゃないから削除する方向か、もしどうしても必要なら、おっしゃる通り「区切り位置」コマンドを利用するなどして、もう1つ列を用意して、そこに出力するとか。
統一する際には、「(株)」とかに略称ではなく、「株式会社」とかの正式名称にするのがいいと思う。で、法人格を前付けにするか、後ろ付けにするかというのは、登記にも関係してくるところだから、勝手に「前付けに統一」とかしないほうがいいと思います。そんなんだったら、そもそも法人格なんて付けなくていいかも。
区切り位置で分けて、地道な作業することにしました。
SAPのマスターが『(株)』←2バイトで登録されている自体で、信じられない会社です・・・。涙
No.3
- 回答日時:
こんにちは。
私なども、そうした大変な場は何度もくぐっていますから、それは、まず、出来る部分からしてください。ただ、最終的に100%は、プログラム等でも不可能だというしかありません。入力したときの精度問題ですから、それをどう判定するかは最終的には人間に委ねられます。ただ、正直なところ、2年間のツケということになってしまいますし、オフコンの世界の話で、パソコンでは、すでに、その表は、精度が悪くて、設計の段階で失敗のようです。
>会社名の表記が一部違うためVlookupしても#N/Aが返ってくる物が発生する。
以下のデータが同じだとする根拠は、本来はありません。
Book1
2 有限会社ABC 佐藤
Book2
2 (有)ABC 東京都 ?
確かに、同じような気もするけれど、外部の人間には、それは、同じものだと判断する根拠がありません。それは、プログラムや関数でも同じことではないでしょうか?これが、同じものだと判断する前提を作ってあげなくては、それは同じものだとは判定できません。
ただ、今の段階では、ある程度、表記を統一させることだけを考えてみました。
出力例
株式会社OKWAVE --- OKWAVE(株)
OKWAVE株式会社 --- OKWAVE(株)
(有)OKwave --- OKwave(有)
オーケーWave(合) --- オーケーWave(合)
オーケーwave(株) --- オーケーwave(株)
有限会社ABC --- ABC(有)
英数で半角にすべきものは半角に、カタカナは半角にはしない、前(株)は、後ろ(株)に、するなどの処理がほどこされています。
'標準モジュール
Sub ReplaceData()
Dim rng As Range
Dim buf As String
Dim tbuf As String
Dim c As Variant
Dim i As Integer
Dim Matches As Object
Dim Match As Object
Dim prAr As Variant
Dim psAr As Variant
Dim prSrWd As String
Dim psSrWd As String
'=====================================
'出力列 4というのは、A列に対して、E列ということ。(D列ではありません)
Const OUTCOL As Integer = 4
'入力データ(選択した列の、1行目からデータの最後まで)
With ActiveSheet
Set rng = .Range(.Cells(1, Selection.Column), .Cells(65536, Selection.Column).End(xlUp)) ' Range("A1:A10")でも可能
''マウスの選択の範囲の場合 ''シングルクォーテーションを取って、上記にシングルクォーテーションをつける
'Set rng = Selection
End With
'設定前値 コンマ(,) は半角のみ
Const PREWORD As String = "株式会社,合資会社,有限会社"
'設定後値 括弧()は、半角のみ
Const POSTWORD As String = "(株),(合),(有)"
'=====================================
prAr = Split(PREWORD, ",")
psAr = Split(POSTWORD, ",")
prSrWd = "[" & PREWORD & "]"
psSrWd = "[" & POSTWORD & "]"
With CreateObject("VBScript.RegExp")
.Pattern = "[!-~]+"
.Global = True
.IgnoreCase = True
For Each c In rng
If VarType(c.Value) = vbString Then
buf = c.Value
Set Matches = .Execute(buf)
If Not Matches Is Nothing Then
For Each Match In Matches
buf = Replace(buf, Match.Value, StrConv(Match.Value, _
vbNarrow))
Next Match
End If
If buf Like "*" & prSrWd & "*" Then
For i = 0 To UBound(prAr)
tbuf = Replace(buf, prAr(i), "")
If Len(buf) > Len(tbuf) Then
buf = tbuf & psAr(i)
Exit For
End If
Next i
End If
If buf Like psSrWd & "*" Then
For i = 0 To UBound(prAr)
tbuf = Replace(buf, psAr(i), "")
If Len(buf) > Len(tbuf) Then
buf = tbuf & psAr(i)
Exit For
End If
Next i
End If
If buf <> "" Then
c.Offset(, OUTCOL).Value = buf
Else
c.Offset(, OUTCOL).Value = c.Value
End If
buf = ""
End If
Next c
End With
Set rng = Nothing
End Sub
ここまでしっかり書いていただき、お礼申し上げます。ありがとうございました。
情けないことに、マクロ未経験でせっかくいただいたアドバイスの理解が浅いですが、後の作業が楽になるならと勉強しようという気になりました。
No.2
- 回答日時:
◆やりかたいことがイマイチ解りませんが?
★こんなことなら
A B
1 株式会社OKWAVE 100
2 OKwave(株)▲本社 8
=LOOKUP(1,0/FIND("okwave",ASC(LOWER(A1:A2))),$B$1:$B$2)
★上の式なら、 8
=INDEX(B1:B2,MATCH(FALSE,INDEX(ISERROR(FIND("okwave",ASC(LOWER(A1:A2)))),),0),)
★この式なら、 100 が表示されます
★ヒントになればいいのですが
この回答への補足
説明が悪くてすみません。再度書いてみますが、ご理解いただけるか・・・。過去2年の売上記録を集計をしたいのですが、それぞれ40,000行くらいありました。
【やりたいこと】独立した2つのbook(シートでも)があります。
一方には担当者名が入っていて、別のBook2には担当者名は入っていません。そこでbook1データを元に担当者を導き出したいと思いますが、会社名の表記が一部違うためVlookupしても#N/Aが返ってくる物が発生する。
(book1)
A B
1 会社名 担当
2 有限会社ABC 佐藤
3 エクセル株式会社▲本社 鈴木
(book2)
A B C
1 会社名 住所 担当
2 (有)ABC 東京都 ?
3 エクセル株式会社 埼玉県 ?
どこを着眼点に、どの手順でやれば良いのか混乱中です。再度よろしくお願いします。
関数も上手く組み合わせれば、便利なものなのですね。
今回は使えませんでしたが、教えていただいた関数は別件でも使えそうです。ありがとうございました。
No.1
- 回答日時:
やりかたいことがイマイチ解りません。
> 法人恪を取ってからvlookupをしようと思っていますが
これだと
株式会社OKWAVE、OKwave(株)▲本社、(有)OKwaveは全て同じ法人として扱われてしまいます。
こんなアドインがあります。
http://srcedit.pekori.jp/tool/excelre.html
正規表現による検索・置換ダイアログを使える要になるアドインですが、
オマケとして、正規表現のワークシート関数が使えるようになります。
ただ、ご要望の内容がはっきりしないので、目的に合っているかどうか...
この回答への補足
ありがとうございます。
説明わかりづらいですよね・・・。
会社PCを貸与されているので、フリーソフトを含めて勝手にDLができないので残念です。
自宅PCへDLして、作業をすれば良かったのですね。
教えていただいたURLは今後の参考にさせていただきます、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- その他(Microsoft Office) エクセルの数式で教えてください。 2 2023/01/12 13:51
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Excel(エクセル) エクセルに詳しい方 よく読んでからのご回答お願いします 外部からデータが来ますが、日付が202201 7 2022/06/29 16:15
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Excelで社名と名前を分けたい
Excel(エクセル)
-
(株)・(有)と会社名を分ける関数を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでの文字入力について
-
【マクロ】Call関数で呼び出し...
-
Excelのデーターバーについて
-
【マクロ】シート追加時に同じ...
-
システムファイルについて
-
別のシートの指定列の最終行を...
-
エクスプローラーで見ることは...
-
エクセルで、数字の下4桁の0を...
-
カーソルを合わせてる時のみ行...
-
スプレッドシートでの数値集計
-
UNIQUE関数の代用
-
Excel 日付の表示が直せません...
-
エクセルの設定、下へスクロー...
-
Vba アドインソフトのバージョ...
-
Excelのマクロが表示できない
-
エクセルの数式につきまして
-
Excel関数の解決方法
-
自動的に日付入力 応用
-
エクセルの設定、特定の列以降...
-
エクセルの数式について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報