大人になっても苦手な食べ物、ありますか?

エクセルマクロVBAについて教えてください。
まるっきりの初心者なので困っています。
シート1にあるA列の部番でJ111AH、J111A、J111Bといった先頭の数字が同じでその後のアルファベットが違う3種類の部品があります。
このうちJ111AHとJ111Aは納品時にユニットとして入って来るものでJ111Bは組付け時に
J111AHに取り付ける部品になります。
この3種類の部番を納品チェック時に単品で納入されないJ111Aを”-”で対象外としてB列に表示させたいです。
以上のマクロプログラムはどのようにすればいいか教えてください。
自分でいろいろ試してみましたが、うまくいかず詳しい方に聞くのが一番かと思い質問しています。
どうか、詳しい方の回答をよろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。
    説明が下手ですみません。

    A列は部番列、B列は納品チェック欄です。
    やりたい事ですが
    部番列の部番末尾のアルファベットの組合せで判定したい。
    AHならAにーをつける
    BHならBにーをつける
    判定結果をB列に入れる。

    以上がやろうとしている事です。
    見にくいですが作りたいもののイメージした画像を付けました。
    ご指導宜しくお願いします。

    「エクセルマクロについて教えて下さい。」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2024/10/19 17:27
  • 大変わかりやすい回答ありがとうございます。
    追加で確認ですが
    現在、部番列はAですがこれをE列に変更して
    さらに、2行目を6行目からに変更するには
    何処を変えれば良いか教えてください。
    宜しくお願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/10/21 11:39
  • 説明下手ですみません。
    ーを出力したいところは、F列以降で指定した複数列につける場合でお願いします。
    宜しくお願いします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2024/10/21 12:06
  • 回答ありがとうございます。
    そうです。
    F列以降でH列、L列と言った感じで選んだ列にーを出力したいです。

    No.5の回答に寄せられた補足コメントです。 補足日時:2024/10/21 12:45
  • 何度もすみません。
    最初に指定しておいた列にーを出力したいです。
    指定した列は固定で変わりません。
    宜しくお願いします。

    No.6の回答に寄せられた補足コメントです。 補足日時:2024/10/21 13:08
  • 説明が下手なのにやりたい事を省略して質問して
    伝わらず、すみません。
    やりたい事はE列を部番列にして
    L、O、R、U、X、AA、AD、AG、AJ、AM
    AP、AS、AV、AY、BB、BE列に
    ーを出力したいです。
    ーを表示する行は6行目以降になります。
    以上がやりたい事です。
    宜しくお願いします。

    No.7の回答に寄せられた補足コメントです。 補足日時:2024/10/21 15:01
  • 回答ありがとうございます。
    実際に使ってみました。
    思っていた通りの表示が出てきました。
    一つ気になったのですが
    部番列の番号で今回対象にしているA、B、AH、BH意外の番号が出てきた際はどうなりますでしょうか?
    可能性が有るものとして
    末尾のアルファベットが違う、部番が数字のみ
    部品名で書かれている
    この様なときに判定には影響は無いのでしょうか?

    No.8の回答に寄せられた補足コメントです。 補足日時:2024/10/22 09:16
  • 回答ありがとうございます。
    今後、部番の表示で先程質問した
    末尾のアルファベットが違う、部番が数字のみ
    部品名で書かれているが追加されるので
    A、B、AH、BHのみを対象にして
    ーを出力したいです。

    No.10の回答に寄せられた補足コメントです。 補足日時:2024/10/22 10:29

A 回答 (11件中1~10件)

>末尾のアルファベットが違う、部番が数字のみ


>部品名で書かれているが追加されるので
>A、B、AH、BHのみを対象にして
>ーを出力したいです。

申し訳ありません。そうなると、私の手に負えません。
どなたか、ほかの回答者が回答してくださるのを待ってください。
    • good
    • 0
この回答へのお礼

丁寧な説明、回答ありがとうございました。

お礼日時:2024/10/22 10:54

>部番列の番号で今回対象にしているA、B、AH、BH意外の番号が出てきた際はどうなりますでしょうか?


>可能性が有るものとして
>末尾のアルファベットが違う、部番が数字のみ
部品名で書かれている
この様なときに判定には影響は無いのでしょうか?

エラーを検知した行で、エラーメッセージを表示し、止まります。
継続する場合は、一旦、エラーのデータを正しく訂正し、再度、マクロを実行しなおしてください。そうすると、最初からやり直します。
この回答への補足あり
    • good
    • 0

>このサイトは質問サイトであってExcelVBAの作成を 請け負うサイトではありませんので。



ホントそうです。

本来、ここはExcelVBAの作成を 請け負うサイトではないのに、親切な人は全部作ってしまうから、誰か親切な人がタダで作ってくれるサイトだと勘違いしてる質問者が後を絶たない。

「いろいろ試してみましたが」と書くんじゃなくて、どういう事を試してみたのかソースコードを示して、どのようにうまく行かなかったのか、エラーが出るのか、エラーは出ないけど意図したように動作しないのか、そういうのを提示した上で、元のソースのどこに問題があるのかを質問するのが、本来の質問でしょう。

まるまる作ってもらうのは質問と回答というここの趣旨から逸脱してますよ。
この質問者さんだけの問題じゃありませんけど。
    • good
    • 0

下記へアップしました。


https://ideone.com/28qSiK

使用時の注意事項
1.部番列はE列にしてあります。変える場合は3行目の
Const BubanCol As String = "E" '部番列
を適切な列に変えてください。
2.データの開始行は、6行にしてあります。変える場合は2行目の
Const StartRow As Long = 6 'データ開始行(1以上を指定)
を適切な数値に変えてください。
3.ーの出力対象列は、4行目の
Const OutColTbl As String = "L,O,R,U,X,AA,AD,AG,AJ,AM,AP,AS,AV,AY,BB,BE" '-出力対象列
を適切な列に変えてください。

4.ーの出力対象列(L,O・・・BE列)は、マクロ実行時、最初に全てクリアされます。もし、クリアしたくなければ、23行目の
Call clear_out_cols(ws, StartRow, lastRow, outcols) '全ての出力対象列をクリア
の行を削除するか、コメントアウトするかしてください。
この回答への補足あり
    • good
    • 0

>最初に指定しておいた列にーを出力したいです。


>指定した列は固定で変わりません。

それは、B列ですか、それともF列でしょうか。
これから外出します。返信は夕方以降になります。
この回答への補足あり
    • good
    • 0

>F列以降でH列、L列と言った感じで選んだ列にーを出力したいです。



すみません。意味がよくわかりません。
マクロ実行時に、あなたが、どの列に出力するかを選ぶということでしょうか。例えば、H列を選んだらH列に出力し、Z列を選んだらZ列に出力したいということですか?
この回答への補足あり
    • good
    • 0

>ーを出力したいところは、F列以降で指定した複数列につける場合でお願いします。



「F列以降で指定した複数列」は
「F列以降で指定した複数行」の間違いでしょうか?

「F列以降で指定した複数列」をそのまま解釈すると、F列、G列、H列、・・・
等に-を出力するように読み取れます。
この回答への補足あり
    • good
    • 0

No3です。


>現在、部番列はAですがこれをE列に変更してさらに、2行目を6行目からに変更するには何処を変えれば良いか教えてください。

ーを出力するのはB列で良いのですか。それともF列でしょうか。
この回答への補足あり
    • good
    • 0

下記URLにアップしました。


標準モジュールに登録してください。
https://ideone.com/9KNOvf
この回答への補足あり
    • good
    • 0

こんにちは



ご質問の文章が漠としすぎていてよくわからないので勝手に解釈しました。

>先頭の数字が同じでその後のアルファベットが違う3種類の部品があります。
例示されている番号の先頭は「J」なので数字ではないですが・・
数字は3文字の決め打ちで良いのかも不明です。

>J111Aを”-”で対象外としてB列に表示させたいです。
A列の表示を「-」としたいのか、B列に「-」とするのかもはっきりしませんね。


勝手に以下として解釈しました。
『A列の値の最後の1文字が「A」の場合に、A列は「-」の表示とし、B列にA列の値を転記する』

※ 以下のコードは上記内容で動作しますので、解釈が違っている場合は、適宜修正してください。
(マクロを使おうというのですから、修正ぐらいはできるでしょう)

Sub Sample()
Dim c
With Worksheets("シート1") ' ←シート名が違う場合は修正すること
For Each c In Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
 If Right(c.text, 1) = "A" Then
  c.Offset(, 1).Value = c.Value
  c.Value = "-"
 End If
Next c
End With
End Sub
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A