質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

428閲覧

一部のデータだけ転記されない

nemnem

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

2クリップ

投稿2024/08/27 07:59

実現したいこと

マクロで30,000行ほどのデータから条件に合致するデータのみを別シートに転記したいです

発生している問題・分からないこと

条件に合致するデータが2,500あり、そのうち7行のみが転記されません

エラーメッセージ

error

1処理は正常終了し、エラーメッセージは表示されません

該当のソースコード

VBA

1 LstRow = Worksheets("前工程より").Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 2 3 Worksheets("表紙").Cells(7, 3).Value = Left(Worksheets("前工程より").Cells(2, 3), 4) '表紙sheetのC7セルに前工程よりsheetのC2セルの年をセット 4 5 For shNo = 2 To Worksheets.Count 'シート2から最終シートまで 6 If Worksheets(shNo).Cells(1, 1).Value = "パターン名" Then 'A1が「パターン名」なら 7 accNo = Val(Worksheets(shNo).Cells(5, 2).Value) '勘定科目№の変数にB5セルの値をセット 8 Cnt2 = 9 '元帳行番号の変数に9をセット 9 For Cnt1 = 2 To LstRow '前工程よりsheetの2行目から最終行まで 10 If accNo = Worksheets("前工程より").Cells(Cnt1, 11).Value Then 'B5(勘定科目コード)=前工程よりsheetのK列なら 11 If Worksheets("前工程より").Cells(Cnt1, 1).Value = "借" Then '前工程よりsheetのA列が「借」なら 12 If Cnt2 = 9 Then '元帳行番号の変数が9なら 13 Worksheets(shNo).Cells(Cnt2, 1).Value = Worksheets("前工程より").Cells(Cnt1, 3).Value 'A列に前工程よりC列をセット(伝票日付) 14 Worksheets(shNo).Cells(Cnt2, 2).Value = Worksheets("前工程より").Cells(Cnt1, 4).Value 'B列に前工程よりD列をセット(伝票№) 15 Worksheets(shNo).Cells(Cnt2, 3).Value = Worksheets("前工程より").Cells(Cnt1, 5).Value 'C列に前工程よりE列をセット(証憑番号) 16 Worksheets(shNo).Cells(Cnt2, 4).Value = Worksheets("前工程より").Cells(Cnt1, 20).Value 'D列に前工程よりT列をセット(相手会計単位コード) 17 Worksheets(shNo).Cells(Cnt2, 5).Value = Worksheets("前工程より").Cells(Cnt1, 21).Value 'E列に前工程よりU列をセット(相手会計単位名) 18 Worksheets(shNo).Cells(Cnt2, 6).Value = Worksheets("前工程より").Cells(Cnt1, 22).Value 'F列に前工程よりV列をセット(相手勘定科目コード) 19 Worksheets(shNo).Cells(Cnt2, 7).Value = Worksheets("前工程より").Cells(Cnt1, 23).Value 'G列に前工程よりW列をセット(相手勘定科目名) 20 Worksheets(shNo).Cells(Cnt2, 8).Value = Worksheets("前工程より").Cells(Cnt1, 27).Value 'H列に前工程よりAA列をセット(相手取引先コード) 21 Worksheets(shNo).Cells(Cnt2, 9).Value = Worksheets("前工程より").Cells(Cnt1, 28).Value 'I列に前工程よりAB列をセット(相手取引先名) 22 Worksheets(shNo).Cells(Cnt2, 10).Value = Worksheets("前工程より").Cells(Cnt1, 9).Value 'J列に前工程よりI列をセット(自会計単位コード) 23 Worksheets(shNo).Cells(Cnt2, 11).Value = Worksheets("前工程より").Cells(Cnt1, 10).Value 'K列に前工程よりJ列をセット(自会計単位名) 24 Worksheets(shNo).Cells(Cnt2, 12).Value = Worksheets("前工程より").Cells(Cnt1, 16).Value 'L列に前工程よりP列をセット(自取引先コード) 25 Worksheets(shNo).Cells(Cnt2, 13).Value = Worksheets("前工程より").Cells(Cnt1, 17).Value 'M列に前工程よりQ列をセット(自取引先名) 26 Worksheets(shNo).Cells(Cnt2, 14).Value = Worksheets("前工程より").Cells(Cnt1, 31).Value 'N列に前工程よりAE列をセット(摘要) 27 Worksheets(shNo).Cells(Cnt2, 15).Value = Worksheets("前工程より").Cells(Cnt1, 18).Value 'O列に前工程よりR列をセット(自プロジェクトコード) 28 Worksheets(shNo).Cells(Cnt2, 16).Value = Worksheets("前工程より").Cells(Cnt1, 19).Value 'P列に前工程よりS列をセット(自プロジェクト名) 29 Worksheets(shNo).Cells(Cnt2, 17).Value = Worksheets("前工程より").Cells(Cnt1, 13).Value 'Q列に前工程よりM列をセット(課税区分コード) 30 Worksheets(shNo).Cells(Cnt2, 18).Value = Worksheets("前工程より").Cells(Cnt1, 14).Value 'R列に前工程よりN列をセット(課税区分名) 31 Worksheets(shNo).Cells(Cnt2, 19).Value = Worksheets("前工程より").Cells(Cnt1, 15).Value 'S列に前工程よりO列をセット(消費税率) 32 Worksheets(shNo).Cells(Cnt2, 20).Value = Worksheets("前工程より").Cells(Cnt1, 6).Value 'T列に前工程よりF列をセット(借方) 33 Worksheets(shNo).Cells(Cnt2, 21).Value = "" 'U列の値をクリア(貸方) 34 Cnt2 = Cnt2 + 1 '元帳行番号を1つ進める 35 Else '元帳行番号の変数が9でなければ 36 Worksheets(shNo).Rows(Cnt2 - 1).Copy (Worksheets(shNo).Rows(Cnt2)) '上の行をコピーし貼り付け 37 Worksheets(shNo).Cells(Cnt2, 1).Value = Worksheets("前工程より").Cells(Cnt1, 3).Value 'A列に前工程よりC列をセット(伝票日付) 38 Worksheets(shNo).Cells(Cnt2, 2).Value = Worksheets("前工程より").Cells(Cnt1, 4).Value 'B列に前工程よりD列をセット(伝票№)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

30,000行ではなく、転記されなかった7行のみで処理をすると正しく転記されました

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sage

2024/08/27 08:59

7行と分かっているのならば、その7行のデータをよく見れば解決しそうなものなのですが。 If Worksheets("前工程より").Cells(Cnt1, 1).Value = "借" Then がtrueになっているつもりだが、trueになっていない行が7行あるのでは? (例えば"借 "になっているとかで)
nemnem

2024/08/27 09:27

コメントありがとうございます。 転記されなかった7行のみを抽出して処理を試すと正しく転記されるので、7行も条件は満たしていると思われます。 そのため対処方法が分からず質問した次第です。 引き続きアドバイスいただけますと幸いです。 どうぞよろしくお願いいたします。
sage

2024/08/27 09:54

break pointを設定して地道にデバッグするしかないですね。 データを7行のみにしたらコピーできたのならば、もう少し増やしてテストすれば分かるのでは? vbaの一部だけが提示されていますが、提示されていない部分に誤りがあるので指摘しようがない可能性もあります。
nemnem

2024/08/28 00:03

ありがとうございます。 7行のデータを再度確認したところデータの一部に共通点があり、それを糸口に解決できそうです。 ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか? お手数をお掛けいたしますが、どうぞよろしくお願いいたします。
guest

回答2

0

ベストアンサー

break pointを設定して地道にデバッグしてみるのがいいと思います。
データを7行のみにしたらコピーできたのならば、もう少し増やしてテストすれば分かるのでは?

投稿2024/08/28 02:02

sage

総合スコア1240

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nemnem

2024/08/28 02:30

無事解決いたしました! このたびはありがとうございました!
guest

0

[香車]東上☆Aho☆海美「
Microsoft に報告すればいいと思います。

投稿2024/08/27 10:31

umimi

総合スコア517

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問