[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件つき転記』(キリン)
お世話になっております。
昨年教えていただいた分が、途中になってしまっていて申し訳ありません。
自分でも条件がよくわからなくなってしまったので、再度見直しました。
お手数おかけしますが、こちらの内容にて再度教えていただきたく宜しくお願いいたします。
注文番号の範囲によって、転記する箇所を変えたいです。
(条件)シート
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 >
ご参考。
https://www.google.com/search?q=vba+replace
https://www.google.com/search?q=vba+val
(ひまつぶし) 2022/01/08(土) 17:03
ご質問は、↓この部分のことですよね?
>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
(条件)シート 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
Cellsの列指定は、「Cells(i, "BG")」のように書くとわかりやすいです。
このような間違いは、動かしたらすぐわかりますよ。
(ひまつぶし) 2022/01/09(日) 07:47
その旨は、冒頭に、お詫びの記載させていただいております。
→昨年教えていただいた分が、途中になってしまっていて申し訳ありません。
自分でも条件がよくわからなくなってしまったので、再度見直しました。
お手数おかけしますが、こちらの内容にて再度教えていただきたく宜しくお願いいたします。
いい加減な質問をしているように誤解されているように感じましたので、記載させていただきました。
知識不足のため不明点が多く、そのため質問が下手で、それがいい加減と捉えられてしまっているようでしたら誤解と思われます。
いずれにしましても、Y様はそのように不快に思われたようですので、お詫びさせていただきます。
申し訳ございませんでした。
また、ROMに回るとは、回答しないという解釈でよかったでしょうか。
こちらとしましては、回答をいただいた方に対して、返信の放棄は決してしていませんので、誤解なきよう確認させていただきました。
今までご回答いただき、ありがとうございました。
ひまつぶし様
ご回答いただき、ありがとうございます。
Cellsの列指定、間違えないよう変更します。
(キリン) 2022/01/09(日) 10:18
ニックネームで検索すると↓なんかも引っかかりますが・・・
[[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、2の通りです。
また、コードの記載もいただきありがとうございます。
条件シートは見直しました。おっしゃる通り、数字だけにしました。
そしていただいたコードをもとに、Select Case調べたことも加え、無事起動することができました。
解決でき、大変感謝しています。どうもありがとうございました。
(キリン) 2022/01/10(月) 18:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.