前回こちらで質問させていただいたのですが、説明不足だったので再度質問として補足を加えました。回答をいただいた方には申し訳ありませんが再度確認をお願い出来ませんでしょうか?
リストには番号、産地、品物、数量といった感じで横に並んでいます。
番号 産地 品物 数量
0001 北海道 豚桃 3
0002 大阪 サンマ黒 5
0003 鹿児島 豚 TB黒F 2
0004 長崎 牛黒F 9
0005 大分 牛無色 1
問題になるのが品物の項目で様々な色や品目があり、
同じ豚でもタイプが違って豚、豚 TBというようにスペースが空いてたりします。
色も同様に黒、黒Fといった感じで他にも無色、例外ものがあったります。
これらを考慮しつつ下記の図のように抽出させてその後の作業に続くマクロを作りたいと思っています。
番号 産地 品物 色 数量
0001 北海道 豚 桃 3
0002 大阪 サンマ 黒 5
0003 鹿児島 豚 TB 黒F 2
0004 長崎 牛 黒F 9
0005 大分 牛 無色 1
条件に豚、豚 TB、サンマ、牛を指定してその後に続く文字を色に持ってこさせるか
もしくは他の方法で効率のいいやり方があればマクロで教えて頂けませんでしょうか?
急ぎではありませんので宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
#3です。
”色+アルファベット1文字”若しくは”*色”とあった場合が例外として、
それを除くと一番右の値を移動させる。
例)
豚桃⇒豚 桃
豚黒A⇒豚 黒A
豚水色⇒豚 水色
豚黄緑色⇒豚黄 緑色(不対応。。。)
D列への列挿入から開始。
Sub try()
Dim r As Range
Dim st As String
' D列に新しい列を挿入
Range("D:D").Insert
' D1の値を”色”とする
Range("D1").Value = "色"
' C2~Cの最終行までを調べる
For Each r In Range("C2", Cells(Rows.Count, 3).End(xlUp))
' C列の値の一番右をチョイスする
st = Right$(r.Value, 1)
' もしチョイスした値を小文字にしたらA~Zだった場合か、
' ”色”となっていた場合
If StrConv(st, vbNarrow) Like "[A-Z]" Or st = "色" Then
' チョイスする値を右から2文字にする
st = Right$(r.Value, 2)
End If
' D列にチョイスした値を入れる
r.Offset(, 1).Value = st
' C列からチョイスした文字を消す
' C列の文字数を左からチョイスの文字数を引いた文字数
r.Value = Left$(r.Value, Len(r.Value) - Len(st))
Next
End Sub
みたいな感じですけど。
この回答への補足
If StrConv(st, vbNarrow) Like "[A-Z]" Or st = "色" Then
こちらの"[A-Z]" を複数指定させることは可能でしょうか?
例えば、A-Zのときは2文字、無のときは3文字とか・・・
こちらで複数指定でやってみましたのですがうまく行きませんでした。
ほとんどのパターンにうまく行きました。
一部のパターンにはうまくいかなかったようです。(それでも嬉しいです)
カメ無とかカタカナが含まれている色には判別できないみたいです。
私の説明不足で申し訳ありません・・・
有難うございました。
No.5
- 回答日時:
質問の表のパターンではうまく行きますが・・・・
他のパターンが出てくると無理だと思う
元のリスト:Sheet1
書き出し先:Sheet2
Sub test()
Dim i As Long
Dim iLen As Integer
Dim jLen As Integer
Dim lAsc As Long
Dim sTxt As String
With Worksheets("sheet1")
For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
iLen = Len(.Cells(i, 3).Value)
For jLen = iLen To 2 Step -1
sTxt = Mid(.Cells(i, 3).Value, jLen, 1)
lAsc = Asc(sTxt)
If lAsc < 65 Then
If sTxt <> "色" Then
Worksheets("sheet2").Cells(i, 1).Value = .Cells(i, 1).Value
Worksheets("sheet2").Cells(i, 2).Value = .Cells(i, 2).Value
Worksheets("sheet2").Cells(i, 3).Value = Left(.Cells(i, 3).Value, jLen - 1)
Worksheets("sheet2").Cells(i, 4).Value = Right(.Cells(i, 3).Value, iLen - jLen + 1)
Worksheets("sheet2").Cells(i, 5).Value = .Cells(i, 4).Value
Exit For
End If
End If
Next jLen
Next i
End With
End Sub
参考まで
回答有難うございます。
#4と同じように上手く行きました。
これらを参考にしてカメ無が含まれているパターンも判別出来るようにしてみたいと思います。
有難うございました。
No.3
- 回答日時:
#2です。
>追加で新しい色やタイプがどんどん入ってきます。
出力する側で何らかの対応をしないと、
モグラたたき状態になるのでは?
⇒受け側で対策を講じても都度変更しなければいけなくなる。
と思いますよ。
結局”品物”と”色”が混在している中で、
<どんなパターンがあるのか?>と言うのが最重要ポイントでしょう。
”右から1文字”と言っても”黒F”や”無色”は該当しませんし、
なら”その2つだけしか例外はない?”
と言うわけでもないのでしょう。
回答有難うございます。
例外が出てきたとしても色の文字数のパターンとしては1~3文字までです。
品物で「豚 TB」の「名前 タイプ」のようにスペースが空いてたりするので「豚 TB黒」の時に「TB黒」を色と見なして抽出されてしまう場合があるかなと思いまして・・・
No.2
- 回答日時:
別に”品物”のリストを作成出来れば可能かと思いますが。
番号 産地 品物 数量
0001 北海道 豚桃 3
0002 大阪 サンマ黒 5
0003 鹿児島 豚 TB黒F 2
0004 長崎 牛黒F 9
0005 大分 牛無色 1
”品物”の右に”色”の列を追加して値をコピー
番号 産地 品物 色 数量
0001 北海道 豚桃 豚桃 3
0002 大阪 サンマ黒 サンマ黒 5
0003 鹿児島 豚 TB黒F 豚 TB黒F 2
0004 長崎 牛黒F 牛黒F 9
0005 大分 牛無色 牛無色 1
あとは
品物
豚 TB
豚
サンマ
牛
と言うリストを用いて”色”の列の値の”品物名"を置換で""に変えてしまうとか?
⇒リスト行数によっては時間はかかるかも。。。
回答有難うございます。
リストは行数はゆうに15000を超え、色や品物はこれ以外にも沢山あり
追加で新しい色やタイプがどんどん入ってきます。
時間かかりそうな気がします・・・
こちらは品物と数量の間にセルを追加してSUBSTITUTEとRIGHTを使用して右側から
1文字を抽出させて、フィルタで抽出し切れていない色を検索しつつちまちま修正しています。これをマクロに組み込めればいいのですが、初心者で品物と色の判別をどうプログラミングしていけばいいのかわからないのです。
No.1
- 回答日時:
番号 産地 品物 数量
0001 北海道 豚/桃 3
0002 大阪 サンマ/黒 5
0003 鹿児島 豚/TB黒F 2
0004 長崎 牛/黒F 9
0005 大分 牛/無色 1
上記のような整理の仕方が出来ませんか?可能であれば
分割文字を/にして、容易に品目と色に分割できます。
まず、整理方法を検討した方が良いのではないですか。
回答有難うございます。
データが受信されてから始める作業でエクセルに詳しくない方にやらせたいと思っており、整理してからマクロにかける作業を考えていましたが難しいと言われたのです。
上記の場合、豚 TB黒Fは豚 TB/黒Fになります。TBはタイプのようなものです。
やはり厳しいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- スーパー・コンビニ スーパーマーケットの肉がいつも表示より少ない。どこへ通報したら良いですか? 6 2022/03/30 11:23
- 教育・文化 大麻取締法とは何ぞや? 大麻を牛や豚に、ビールやタバコを羊に変換して考えてみましょう。戦勝国が自国の 8 2022/11/07 13:36
- ファミレス・ファーストフード ダイエットについてです。食べすぎました。、、 5 2023/03/12 20:28
- 食べ物・食材 畜産は廃止にすべきではないでしょうか? 牛のゲップによる地球温暖化問題、運搬に使うエネルギー問題、飼 24 2022/11/04 14:03
- 食べ物・食材 海外の牛肉の脂肪は、実は黄色いのですか? 日本人が白い脂肪を好むのか 8 2022/10/24 20:22
- Windows 7 エクセルで重複データから抽出したい 2 2022/05/18 23:31
- その他(悩み相談・人生相談) 畜産って残酷ですよね。私は動物が好きなので特に思います。 畜産は廃止にすべきではないでしょうか? 牛 16 2023/04/11 16:17
- 農学 なぜフィンランドでも日本でも真っ先に昆虫食材としてコオロギが取り上げられるようになってい 3 2023/03/10 11:49
- レシピ・食事 あなたが作っていて面白い料理はなんですか? 4 2022/08/11 07:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「経て」の読み方は?
-
九州の女性は何故気が強い人が...
-
お樽という風習ご存知ですか?
-
「インド人の黒んぼ」の由来
-
エクセルで1~47の数字を各都道...
-
福岡市は名古屋市より都会、も...
-
「〜ですね」という言葉は他県...
-
本州って?
-
九州人は基本的に東北人を見下...
-
「来+地名」の言い方
-
福岡市で、車は必要でしょうか?
-
九州から中国地方(山口)まで原...
-
鮮魚を送る方法
-
エクセルの英数入り交じったデ...
-
広島から一番安く大分に行くル...
-
ランプ閉鎖ってなんですか?
-
何故九州は男尊女卑なんですか?
-
神戸市と福岡市、どちらが都会...
-
北九州市と川崎市はどちらが都...
-
羽田空港から長崎空港 安いチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「経て」の読み方は?
-
「〜ですね」という言葉は他県...
-
九州の女性は何故気が強い人が...
-
お樽という風習ご存知ですか?
-
福岡市は名古屋市より都会、も...
-
「インド人の黒んぼ」の由来
-
名古屋市と福岡市は街並みなど...
-
JR 途中下車扱いで枝分かれした...
-
●●け?と語尾に「け」をつける...
-
外国産のアサリは危険ですか?
-
神戸市と福岡市、どちらが都会...
-
長崎では「来崎」、では他県は?
-
ランプ閉鎖ってなんですか?
-
福岡市にDVシェルターってない...
-
コンボボックスにリストが表示...
-
エクセルで1~47の数字を各都道...
-
・<九州人は先祖に多大な朝鮮...
-
福岡の方言って「やん」「あか...
-
新幹線東京博多間で、株主優待...
-
鮮魚を送る方法
おすすめ情報