エクセル、マクロ初心者です。
商品番号と商品の詳細を管理するシートについてです。
下記の件でうまく動きません。
エラーをなくす方法をお教えていただけると助かります。
・商品番号は数字で下記の様な形です
ex:
1-12345
31-11
1-23-2
1-23-5
8-123
①日付表示になってしまう商品番号があるので、該当列は文字列設定にしてあります。
並べ替えして、ハイフン毎に降順にしたい。
得たい結果:
1-23-2
1-23-5
1-12345
8-123
31-11
実際の結果:
1-12345
1-23-2
1-23-5
31-11
8-123
と最初の数字で並べられてしまう。
②商品番号を入れ、ボタンを押すと該当の商品行に移動するマクロを組んだが、
1-23と入力すると、みつかりませんでしたと表示されてほしいのに、枝番付きで一番番号が
若い1-23-2が、選択されてしまう。
Sub 検索()
Dim rng As Range
txt = Range("A2").Value
Set rng = Range("A3:A10000").Find(what:=txt)
If rng Is Nothing Then
MsgBox "みつかりませんでした。"
Else
rng.EntireRow.Select
End If
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
補足ありがとうございます。
>1.シート名は製品台帳です。
>2.データの開始は5行目からです。
>3.CC列まであります
製品台帳のA列の最終行が10000行の場合、
A5:CC10000 の範囲がソートされますが、それで間違いないでしょうか。(A列の値がキー)
No.2
- 回答日時:
①のソートに関してですが、VBAで提供されているsort関数は使用できません。
(ソートの方法が特殊なため)よって、自前でこの機能を実装する必要があります。
以下、その前提での補足要求です。
1.シート名は何でしょうか。
2.データの開始は3行目からで間違いないでしょうか。
3.A列が、商品番号ですが、他の項目の列は何列までありますか。
(C列とかE列とかの返信を期待しています)
○列まである場合、ソート時は、A~○列の範囲がソートされます。
No.1
- 回答日時:
こんばんは
先に②の方を
ご提示の状態だと、含まれていればヒットしてしまうので、ご説明のような結果になるものと思います。
完全一致で検索すれば宜しいかと。
具体的には、Findメソッドで、LookAt:=xlWhole を追加指定しておけば良いと思われます。
①について
ハイフンで分割しておいて、数値としてそれぞれを並べ替えすれば良いですが、階層がどこまであるのか不明なので、一般化するとちょっと面倒ですね。
ハイフンが無かったり、数字以外の文字が混在している場合にどうするのかとか等他にもいろいろありそうですが。
またVBAには並べ替えのメソッドが無いので、自作しなければならないのですが、以下は、シート機能のSORTを利用して並べ替えを行う例です。
ご例示の内容から、3階層まで対応すれば良さそうと仮定して、簡略化してあります。
※ アクティブシートのA列を並べ替えます。
範囲が違う場合は修正してください。
Sub test()
Dim r As Range, c As Range
Dim n As Long, v
Set r = Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row)
Columns("B:D").Insert
For Each c In r.Cells
v = Split(c.Text, "-")
n = Application.Min(UBound(v) + 1, 3)
If n > 0 Then c.Offset(, 1).Resize(, n).Value = v
Next c
Range("B1").Offset(r.Rows.Count).Value = 1
Range("B1").Offset(r.Rows.Count).Copy
r.Offset(, 1).Resize(, 3).PasteSpecial Operation:=xlMultiply
r.Resize(, 4).Sort Range("B1"), 1, Range("C1"), , 1, Range("D1"), 1
Columns("B:D").Delete
Range("A1").Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
固定電話着信履歴 181 ・・・・...
-
81・・・・・から始まる電話...
-
電話番号 +817673467911という...
-
携帯番号変える時は、それなり...
-
体育の時の4列横隊ってどーやっ...
-
0120613184は、どこの番号です...
-
不気味な番号
-
電話をかけるのに、違う番号を...
-
すべて「ひとつ・・・」ではじ...
-
公衆電話番号
-
フリーダイヤルのけた数
-
スマホのsimを変えた時、LINEや...
-
ソニーバンクウォレットの、登...
-
Access DLookup vbaで条件を2件...
-
if関数を使って割引率をだす
-
NHK放送受信契約 お客様番号を...
-
Cas番号について
-
P/Nとは?
-
アップルギフトカードについて...
-
ワードで抽選番号を振りたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
81・・・・・から始まる電話...
-
携帯番号変える時は、それなり...
-
電話をかけるのに、違う番号を...
-
至急お願いいたします! ゆう...
-
固定電話着信履歴 181 ・・・・...
-
電話番号 +817673467911という...
-
同じ商品なのに、JANコード...
-
P/Nとは?
-
フリーダイヤルのけた数
-
すべて「ひとつ・・・」ではじ...
-
銀行で番号札は?
-
くら寿司の自動受付で整理番号...
-
FAX番号の英語表記とは?
-
NHK放送受信契約 お客様番号を...
-
e-Tax 利用者識別番号の二重取得
-
不気味な番号
-
0120613184は、どこの番号です...
-
卸売サイトで必要な番号が何番...
-
MS Wordで図表番号を1から振り...
-
1から5までの番号が1つずつ書か...
おすすめ情報
早急なご回答ありがとうございます(* ˆ ˆ *)
それなのに、反応が遅くなり申し訳ありません。
やはり想定されてる事以外をやろうとしてるんですね…
1.シート名は製品台帳です。
2.データの開始は5行目からです。
3.CC列まであります
早急なご回答ありがとうございます(* ˆ ˆ *)
それなのに、反応が遅くなり申し訳ありません。
①は追加してみたのですが、やり方がおかしいのか、見つかりませんになりませんでした。
②は分割してそれぞれを並べると言うのは理解できたのですが、マクロが複雑で私には無理かもしれないです…
データを分割して、エクセルのデータの並べ替え機能でやろうかと思います>_<
・階層は3つまで、
・ハイフンは必ず1つ(階層は2つ)はあります。
・2つ目のハイフンはない場合もあります。
・ハイフン以外は数字のみとなります