[[20220108153714]] 『条件つき転記』(キリン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件つき転記』(キリン)

お世話になっております。
昨年教えていただいた分が、途中になってしまっていて申し訳ありません。
自分でも条件がよくわからなくなってしまったので、再度見直しました。
お手数おかけしますが、こちらの内容にて再度教えていただきたく宜しくお願いいたします。

注文番号の範囲によって、転記する箇所を変えたいです。
(条件)シート
3行目よりデータです
L (3行目)A0 →注文番号 Aから始まる数字0
M (3行目)から
N (3行目)A10000 →注文番号 Aから始まる数字10000
O (3行目)以下
P (3行目)210630 →転記したいもの
Q (3行目)210701 →転記したいもの

(転記先)シート
2行目よりデータです
AR (2行目より)注文番号が記載されています
BG 条件にもとづく箇所の行に、条件シートのPを転記したい(210630)
BH 条件にもとづく箇所の行に、条件シートのPを転記したい(210701)
※注文番号欄は、Aから始まる数字だけでなく、空白セルのように見えるセル(実際カーソルを当てるとセルの中心くらいにきます)や、他の文字もあります。
※注文番号も、A10000の後に、半角のブランクが数文字分入っています。

Dim i As Long
Dim j As Long
Dim a As Long
Dim b As Long

a = Worksheets("条件").Range("i65536").End(xlUp).Row
b = Worksheets("転記先").Range("k65536").End(xlUp).Row

For i = 2 to a
For j = 3 to b
If Worksheets("転記先").Cells(i, 44) =Worksheets("条件").Cells L3行目のA0からA10000以下であったら Then
Worksheets("転記先").Cells(i, 79) =Worksheets("条件").Cells(j,8)
Worksheets("転記先").Cells(i, 80) =Worksheets("条件").Cells(j,9)
End if
Next
Next
End Sub

アルファベットが混ざっておりよくわからず、教えていただけますと助かります。
よろしくお願い致します。

< 使用 Excel:unknown、使用 OS:unknown >


「注文番号」から「A」を取り除き、
数値に変換してから比較してはいかがですか。

ご参考。
https://www.google.com/search?q=vba+replace

https://www.google.com/search?q=vba+val

(ひまつぶし) 2022/01/08(土) 17:03


ひまつぶし様
ご返信ありがとうございます。
Aが入っている状態ですと、やはり今回やりたいと思っていることはできないでしょうか?
注文番号欄には、他の記載のものも混ざっているため、Aから始まる数字として抽出できればベストと思っていました。
ご確認いただきたく宜しくお願い致します。
(キリン) 2022/01/08(土) 17:40

条件に合うか確認するときだけ変換するのです。

ご質問は、↓この部分のことですよね?
>If Worksheets("転記先").Cells(i, 44) =Worksheets("条件").Cells L3行目のA0からA10000以下であったら
(ひまつぶし) 2022/01/08(土) 18:10


ひまつぶし様
ご返信ありがとうございます。
説明が不足しておりすみません。

ご質問は、↓この部分のことですよね?
>If Worksheets("転記先").Cells(i, 44) =Worksheets("条件").Cells L3行目のA0からA10000以下であったら
→この箇所を含め、起動するマクロを作成したいと思っています。

また、「条件に合うか確認するときだけ変換」という状態がよくわからず、
知識不足で申し訳ございません。
ご確認いただきたく、宜しくお願い致します。
(キリン) 2022/01/08(土) 18:39


>→この箇所を含め、起動するマクロを作成したいと...
それはそうでしょうけど、「この箇所」以外の不具合は認識されているのでしょうか?

「条件に合うか確認するときだけ変換」というのは、
注文番号が「A1234」で、A0からA10000の範囲であるか確認するため、

 A1234 → 1234
 A0 → 0
 A10000 → 10000
と変換して変数などに格納するのです。
数値であれば比較できますよね。

(ひまつぶし) 2022/01/08(土) 18:54


 横から失礼。

 注文番号欄にある余計なspaceは無駄なものだろうから、
 最初にワークシートのTrim関数などで、正常なものに変更すべきでしょう。

 また、検索は Application.Matchで検索すれば一発だと思いますが、
 それ以前に、きちんとした質問に修正して欲しい。それが先決ではないですか。

 (1)
 | 3行目よりデータです
 | L (3行目)A0 →注文番号 Aから始まる数字0
 | M (3行目)から
 | N (3行目)A10000 →注文番号 Aから始まる数字10000
 | O (3行目)以下
 | P (3行目)210630 →転記したいもの
 | Q (3行目)210701 →転記したいもの
 というのが他人には大変分かりにくいです。
 M列には何か入っているの?等々。

 きちんと、下記のような表形式でサンプルを提示してはどうですか?

 (条件)シート
        L列     M     N        O      P         Q
 3行     A0          A10000          210630    210701
 4
 5

 (2)
 また、コードにある
 書込先の列が79,80列というのも、
 これはCA,CB列であって、最初の説明と異なる。
 転記元がH列、I列というのも説明と異なる。
 整合性のある、きちんとした質問をしてください。

 なお、投稿にあたっては、行の最初に半角スペースを入れると、形式が崩れにくいですよ。
(γ) 2022/01/08(土) 21:01

Y様
ご返信いただき、ありがとうございます。
大変わかりにくい記載の仕方をしていまして、申し訳ございませんでした。
また半角使用の件も、教えてくださりありがとうございます。

 (条件)シート
        L列     M          N             O                  P                 Q
 3行  A0     から       A10000   以下              210630       210701
 4行         A10000    より大きい 210930        211001

※M列「から」は文字のみの記載です
※O列「以下」は文字のみの記載です
※本当は、4行にはA10000より大きい場合は、210930, 211001をそれぞれの箇所に転記するとしたいのですが
 一度に聞くとわからなくなってしまいそうなのと、応用としてやってみようと思っています。

(2)に関しては、すみません。記載間違えです。
 BG 条件にもとづく箇所の行に、条件シートのPを転記したい(210630)
 BH 条件にもとづく箇所の行に、条件シートのQを転記したい(210701)
 (BG→59とBH→60は、長すぎてカウントを間違えてしまいました。申し訳ありません。)

説明不足やわかりにくい箇所がございましたら、ご連絡お願いします。
お手数おかけしすみません。宜しくお願い致します。
(キリン) 2022/01/08(土) 23:16


 説明されても詳細よくわからない。
 なぜAから始まるものだけ登場するのか。
 A以外のものはないのなら、Aなんか削ってしまえばいい。
 そうではなくA以外のものもあるんじゃないか?
 何か、部分的にしか問題提起をしていないのではないか、
 と不審に思っていた。

 きちんと条件シートの内容を提示して相談すべきです。
 小出しにせずに。
 また、2行だけでなく、もっと例を示すべきです。

 また、転記先シートの
 ・処理前
 ・処理後
 を、例を挙げてきちんと説明してください。

 検索してみたら、この方は、過去に同様の質問をしているんですね。
 [[20211130221147]]  『条件にあった単価を記載』(キリン)
 [[20211212154133]]  『単価表の条件分岐について』(キリン)

 しかも、回答されているのに、放置している。
 私は全く見ていなかった。
 いわば続きなんですね。

 まずは過去のスレッドをよく消化・理解することではないですか?
 基本的な手法は既に出ているように思います。

 私はROMに回ります。
(γ) 2022/01/09(日) 06:41

>BG→59とBH→60は、長すぎてカウントを間違えてしまいました。

Cellsの列指定は、「Cells(i, "BG")」のように書くとわかりやすいです。

このような間違いは、動かしたらすぐわかりますよ。

(ひまつぶし) 2022/01/09(日) 07:47


Y様
ご返信ありがとうございます。
はい。過去に質問させていただいております。

その旨は、冒頭に、お詫びの記載させていただいております。
→昨年教えていただいた分が、途中になってしまっていて申し訳ありません。
自分でも条件がよくわからなくなってしまったので、再度見直しました。
お手数おかけしますが、こちらの内容にて再度教えていただきたく宜しくお願いいたします。

いい加減な質問をしているように誤解されているように感じましたので、記載させていただきました。
知識不足のため不明点が多く、そのため質問が下手で、それがいい加減と捉えられてしまっているようでしたら誤解と思われます。
いずれにしましても、Y様はそのように不快に思われたようですので、お詫びさせていただきます。
申し訳ございませんでした。

また、ROMに回るとは、回答しないという解釈でよかったでしょうか。
こちらとしましては、回答をいただいた方に対して、返信の放棄は決してしていませんので、誤解なきよう確認させていただきました。
今までご回答いただき、ありがとうございました。

ひまつぶし様
ご回答いただき、ありがとうございます。
Cellsの列指定、間違えないよう変更します。
(キリン) 2022/01/09(日) 10:18


■1
横からですが、「昨年教えていただいた分」とは本当に↓なんですか?
[[20211130221147]]『条件にあった単価を記載』(キリン)
[[20211212154133]] 単価表の条件分岐について』(キリン)

ニックネームで検索すると↓なんかも引っかかりますが・・・
[[20211204161859]]『番号が同じだったら数量を合算したい』(キリン)
[[20211206185758]]『文字や数字の間にハイフンを入れたい』(キリン)
[[20211211144501]]『特定文字を抜き出す』(キリン)

(私にはどれも今回の話とつながってないように思えてよくわからないのでROMってました)

■2
私の環境だとちょっとずれて見えるので整理してみましたがこういうことですよね?

【条件】シートのレイアウト

     __L__  __M___  ___N___  ____O____  ___P___  ___Q___
  3   A0     から   A10000   以下        210630   210701
  4                 A10000  より大きい   210930   211001

このとき【転記先】シートが↓のようになればよいのでしょうか?

(処理後の)【転記先】シート

     ___AR___ ... ____BG____  ____BH____ 
  1  注文番号     P列を転記   Q列を転記
  2  C12
  3  B158
  4  A9            210630      210701
  5  A200          210630      210701
  6     123
  7  A10001        210930      211001

こうであれば、↓のように分岐すればよいことになるから

 条件1:注文番号がAで始まるとき かつ
 条件2:1文字目を除外して数値としてみなしたとき0〜10000である・・・【条件】シートの3行目が適用
                              〃                10001以上である・・・【条件】シートの4行目が適用

例えばコードにするならこんなことになりますよね。

    Sub 研究用01()
        Dim 行 As Long, 参照行 As Long

        With Worksheets("転記先")
            For 行 = 2 To .Cells(.Rows.Count, "AR").End(xlUp).Row
                If Left(.Cells(行, "AR").Value, 1) = "A" Then
                    Select Case Trim(Mid(Cells(行, "AR").Value, 2, 99)) * 1
                        Case 0 To 10000
                            MsgBox "【" & Cells(行, "AR").Value & "】の判定結果" & vbLf & "3行目を適用"

                        Case Is > 10000
                            MsgBox "【" & Cells(行, "AR").Value & "】の判定結果" & vbLf & "4行目を適用"
                    End Select

                Else
                    MsgBox "【" & Cells(行, "AR").Value & "】の判定結果" & vbLf & "Aで始まらないから対象外"
                End If
            Next 行
        End With
    End Sub

よって、コード云々の前に【条件】シートを見直して、アルファベットと数字部分は別に指定するようにされてはいかがですか?

(もこな2 ) 2022/01/09(日) 13:50


もこな2様
お世話になっております。ご返信いただき、ありがとうございます。
>今回の話とつながってないように思えてよくわからない
 →紛らわしく申し訳ありません。自分としましては、1タイトルにつき1質問と考えていました。
  「単価表の条件分岐について」の質問のみ、途中になっているという認識で、お詫びしていた次第です。
  それ以外の質問に対しては解決できており、お礼済みと認識しています。
 (一部お礼の後に、メッセージいただいていたものは、見ていなく気づいていませんでした。失礼しました。)
 こちらとしては、いつも丁寧にご回答いただいており大変有難い気持ちで、質問させていただいています。

もこな2様には、こちらの質問事項を的確にまとめてくださり、ありがとうございます。
はい。条件1、2の通りです。
また、コードの記載もいただきありがとうございます。
条件シートは見直しました。おっしゃる通り、数字だけにしました。
そしていただいたコードをもとに、Select Case調べたことも加え、無事起動することができました。
解決でき、大変感謝しています。どうもありがとうございました。
(キリン) 2022/01/10(月) 18:05


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.