- ベストアンサー
エクセルVBA 請求データ一覧からの複数の処理
kkkkkmの回答
補足に記載していただいたコードをコピペして実行しましたが、問題なく取り出せています。 実行後の「請求書ひな形」の画像を添付します。 AN2からAN5までは私が適当に作成したデータの結果です。 最後の行が頂いたデータで記載されたデータです。 問題になっているLIST3は以下のように作成しました。 LIST3 I01 I02 I03 I04 I05 I06 I07 I08 I09 I10 I11 I12 I13 以下50行目まで適当に 半角全角スペースの有無など確認してみてください。 No.7の変更もやってみてください。 あと I10,EEEE,4650 の組は、前のデータA92の組のすぐ後ろ V列,W列,X列にありますよね。 前のデータA92の組と間隔があいてY列以降にあるのでしたら No.4で回答した飛び飛びの場合の対応をしてください。
関連するQ&A
- エクセルVBA 請求データ一覧からの複数の処理
VBA初心者です。 費目コード・費目名・金額を抽出したデータがあります。 例えば、横一列に A2:費目コード「A01」 B2:費目名「XXXX」 C2:金額「10,000」 D2:費目コード「Z05」 E2:費目名「BBBB」 F2:金額「5,000」 ・ ・ と1行に5~10の費目が抽出されています。 (1行目はタイトル行) 行毎が1件の請求となっていますが、 費目コード〇〇と▲▲は課税(非課税)対象として認識し、 その金額を合計したものを、worksheet2の特定のセルに 記載することは可能でしょうか。 説明が上手く出来ず申し訳ありません。 宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- VBA 請求データ一覧からの複数の処理
先週 kkkkkmさんに質問をさせて頂きまして、 いろいろご指導を頂いたものです。 続編の様な形になってしまいますが、 抽出するデータの環境設定を変更致しました。 ご質問させて頂く内容は前回とほとんど変更がないのですが、 あらためて下記に記載させて頂きます。 <Worksheet1のデータ> J列~AM列までが課税金額 「J,K,L」「M,N,O」・・・「AK,AL,AM」と3列1組(コード・費目・金額) 1組の行もあれば、複数組の行もあり。 AN列~BB列までが非課税金額 課税金額と同じく3列1組 1組の行もあれば、複数組の行もあり。 「BC」=消費税、「BD」=合計金額 ※AN列の前に不規則な空白セルあり BC列の前に不規則な空白セルあり 文章で上手く説明出来ているか自信がありませんので、 エクスポートした元データ Worksheet1と、 vbaを用いて作成した Worksheet3 をご参考に添付致します。 Worksheet1の2行目がWorksheet3の2行目に対応しています。 3行目、4行目も同様です。 不規則な空白が原因でしょうか・・・。 M列、O列は問題ないのですが、 金額が合わなかったり、N列に金額を引いてこないのです。 実行しているコードは下記になります。 Dim i As Long, j As Long, k As Long Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet Dim mTotal(4) As Long Dim LastRow As Long Dim List(4) As Variant Set Ws1 = Sheets("Sheet1") Set Ws2 = Sheets("Sheet2") Set Ws3 = Sheets("請求書ひな形") List(1) = Ws2.Range(Ws2.Cells(1, "A"), Ws2.Cells(Rows.Count, "A").End(xlUp)).Value List(2) = Ws2.Range(Ws2.Cells(1, "B"), Ws2.Cells(Rows.Count, "B").End(xlUp)).Value List(3) = Ws2.Range(Ws2.Cells(1, "C"), Ws2.Cells(Rows.Count, "C").End(xlUp)).Value List(4) = Ws2.Range(Ws2.Cells(1, "D"), Ws2.Cells(Rows.Count, "D").End(xlUp)).Value LastRow = UBound(List(1)) For i = 2 To 4 If LastRow < UBound(List(i)) Then LastRow = UBound(List(i)) End If Next For i = 2 To Ws1.Cells(Rows.Count, "J").End(xlUp).Row mTotal(1) = 0 mTotal(2) = 0 mTotal(3) = 0 mTotal(4) = 0 For j = Columns("J").Column To Columns("BB").Column Step 3 For k = 2 To LastRow If UBound(List(1)) >= k Then If Ws1.Cells(i, j).Value = List(1)(k, 1) Then mTotal(1) = mTotal(1) + Ws1.Cells(i, j).Offset(0, 2).Value Exit For End If End If If UBound(List(2)) >= k Then If Ws1.Cells(i, j).Value = List(2)(k, 1) Then mTotal(2) = mTotal(2) + Ws1.Cells(i, j).Offset(0, 2).Value Exit For End If End If If UBound(List(3)) >= k Then If Ws1.Cells(i, j).Value = List(3)(k, 1) Then mTotal(3) = mTotal(3) + Ws1.Cells(i, j).Offset(0, 2).Value Exit For End If End If If UBound(List(4)) >= k Then If Ws1.Cells(i, j).Value = List(4)(k, 1) Then mTotal(4) = mTotal(4) + Ws1.Cells(i, j).Offset(0, 2).Value Exit For End If End If Next Next Ws3.Cells(i, "J").Value = mTotal(1) Ws3.Cells(i, "K").Value = mTotal(2) Ws3.Cells(i, "L").Value = mTotal(3) Ws3.Cells(i, "N").Value = mTotal(4) Ws3.Cells(i, "M").Value = Ws1.Cells(i, "BC").Value Ws3.Cells(i, "O").Value = Ws1.Cells(i, "BD").Value Next Set Ws1 = Nothing Set Ws2 = Nothing Set Ws3 = Nothing End Sub 本当に何度も申し訳ございません。 お時間がある時に見て頂けると有り難いです。 どうぞ宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- エクセルvbaで、同じ番号の請求書の金額をまとめる方法を教えてください
エクセルvbaで、同じ番号の請求書の金額をまとめる方法を教えてください。 A B C D 11/5 B575 3000 11/5 B575 4500 11/6 B578 3000 上記のように A日付 B請求書番号 C請求金額 が入力されています。 D列に同じ請求書番号の合計金額をセルを結合して中央揃えで表示したいのです。 同じ請求書番号は固まって入力されています。ランダムではありません。 同じ請求書番号は最大で5つくらいです。 同じ請求書番号のないものは、D列にC列と同じものを表示します。 行は最大でも100行程度ですが、データの無いところで止まって終了とします。 ご多忙の中申し訳ございませんがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA アクティブセルからある一定のセルまでの範囲選択
Excel VBA アクティブセルからある一定のセルまでの範囲選択 Excel2003を使用しています。 アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択状態にするマクロを作成しようとしています。 C列に『計』と入力されている行は下記のように複数あるので、アクティブセルの行以下に入力されている次のC列の『計』の1行上までとしたいのですが、どのようにコードを書いたらいいでしょうか? 例えば… A2セルをアクティブにしていてマクロを実行するとA2:D3が選択状態に A7セルをアクティブにしていてマクロを実行すると、A7:D9が選択状態になるように という具合です。 わかりづらくて申し訳ありませんが、よろしくお願いします。 A B C D 1 日付 № 品名 金額 2 1/1 1 ○○○ 1,000 3 1/2 2 ××× 1,500 4 計 2,500 5 6 7 1/1 5 ○×○ 2,000 8 1/3 6 ××○ 1,200 9 1/4 7 ×○○ 2,500 計 5,700 : :
- ベストアンサー
- オフィス系ソフト
- Excel VBAによる検索処理?
Excelで以下の例のように、A列・B列に入力されているとします。A列を検索して、C列にB列の値を返す式を考えてますが、さっぱりわかりません。VBAとかも正直素人ですが、サンプルもしくは考え方を教えていただければと思います。以下の処理内容です。 ・AXセルが「B」であった場合、次のセル(A(X+1))を検索し、次が空白になるまで検索し、空白になる前の最後の行のB列の値をCXセルに返す。該当しない場合は空白のまま 下記の例ですと3行目、8行目のB列の値を2・3、6-8行目のC列のセルに返すことになります。よろしくお願いいたします。 (処理前) ___A__B__C ------------- 1 2__B__2 3__B__3 4______4 5______5 6__B__6 7__B__7 8__B__8 9______9 (処理後) ___A__B__C ------------- 1 2__B__2__3 3__B__3__3 4______4 5______5 6__B__6__8 7__B__7__8 8__B__8__8 9______9
- ベストアンサー
- その他(プログラミング・開発)
- Excel マクロ・VBAの印刷方法について
急ぎの回答です!! 関数式の入っているセル(空白表示)を印刷範囲に入れずに印刷する方法を教えてください。 別シートのデータを関数で引っ張てきてひな形のセルに表示しています。 行→$1:$6 列→$A:$Agは印 刷タイトルに設定。 A列7行目から1.2.3... とNo.が入っており、 B.~J. 列7行目からはデータが最終の50まで入力してます。( 関数式=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1)) ) K.~AG.列7行目からは書式データ(同じ文面の繰り返です。最終の50まで入っています)B~J列の7行目から関数(データ)=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1))をコピぺと一部を変更しセルへ入力して別シートからデータを引っ張てきてます。この関数だと該当する値がない場合はセルは表面上は空白セルに見えますが、セルには数式が入っている状態です。セルデータの最終行を習得し印刷に設定すると関数入力されているところで最終行と認識し、関数式を入れている50行まで印刷してしまいます。 したいことは、データが表示されている30行までなら30行まで印刷という感じにはできないでしょうか? シートを様式一枚ずつ作成しており、1ブックには20シートずつ保存しています。そしてこのブックはおよそ30ブックあります。 1ブック内の全てのシート(20シート)に反映できるようしたいです。 ※30行までデータが表示されている場合、C~Jには途中とちゅうで空白欄がありますが、B列は30行全てデータの表示(該当する場合)されます。 Excel マクロ VBA に詳しい方回答お願いします! B7からはB56まですべて関数式を入力しています(最大50までデータが表示されるように) シート枚数と、元のデータ数が行で7000程とかなり多く、このような関数式になりました。できればマクロ、VBA等での処理が望ましいです(時間がないので><)よろしくお願いいたします!!!
- ベストアンサー
- Excel(エクセル)
- エクセルVBA データ→入力規制→リストの作り方・・・
いつも皆様には大変お世話になっております。 またまた、教えて頂きたい事がありますので宜しくお願い致します。 VBAでとあるセルに入力規制のリストを作りたいのですが、 A B C D 1 あ 2 い 3 う 4 5 となっている状況でD1のセルにAの列のリストを作りたいのです。 但し、A4やA5に今後名前が増えていくのです。 その増えたときに、増えた分の名前もD1のセルにリストとして乗せたいのです。宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル2003 VBAで セル内を 一発呼び出し
エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。 よろしく お願いします。 表 列A~E(結合2行) :商品名と内容 列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで 氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで たまに 同じ氏名 同じような 品を 検索する セルを 2個ほど作って そこへ セル1へ 商品名を入力すると 該当する 行のみ 表示される。 セル2に 名前をを入力すると 該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。
- 締切済み
- オフィス系ソフト
- Excel VBAでデータを自動処理したい(2)
Excelで大量のデータ処理をしなくてはならないのですが、以下の処理をExcel VBAで自動処理できないでしょうか?どなたかお知恵をお貸しください。 別シートに参照リストと未完成リストがあります。参照リストのA列のデータの並びと未完成リストのA列の並びを同じくして、未完成リストを完成させます。参照リストのA列の並びはこんな風です。1 2 3 3 5 6 7 8 8 10 ・・・(データは昇順ですが必ずしも連番ではなく、同じデータが並ぶこともあります。) そして未完成リストの方は、1 2 3 4 5 7 8 10 ・・・といった風です。未完成リストのA列は1 2 3 3 4 5 7 8 8 10・・・という風にしたいのです。つまり参照リストにあっても、未完成リストにないデータは無視します。(上の例では、6です。)参照リストになくて、未完成リストにあるデータはそのまま残します。(上の例では、4です。)両方に共通のデータで参照リストのようにデータが重複しているときは、未完成リストの方に重複している分だけ行を挿入し、上のデータをコピーします。(上の例では、3と8です。)この処理を例えば、それぞれのA列を比較し、お互い共通していないデータ行をそれぞれのリスト上で不可視にし、そのあと、参照リストのA列のデータを参考に重複してるデータを見つけたら、未完成リストの方に重複している分だけ自動に行を挿入し、上のデータをコピーして、参照リストと未完成リストの共通のデータを同じならびにしたいのです。(このあと、参照リストのB,C,Dのデータを未完成リストにコピーするので、未完成リストにしかないA列のデータは、不可視にしておいて、B,C,Dのデータをコピーするときに行がずれないようにしたいのです。) 以上(1)、(2)の処理を自動にさせるためのVBAが分かる方がいらっしゃいましたら、是非ご教授お願いいたします。
- ベストアンサー
- オフィス系ソフト
- 複数EXCELファイル中のデータを1つのファイルへ
同じシート名、同じフォーマットで記載されている約400個のEXCELファイルから、『Participant List』というシート名のB列~H列、8行目~50行の範囲の記載を1つのEXCELファイルに纏めるVBAスクリプトを作成し実行したいのですが、VBAが全く分からず大変困っております。 マクロを実行した時に、入力ファイルと出力ファイルの保存ホルダーを聞いて指定出来るように出来た良いと思っています。 何方か、お分かりでしたらどうぞお力添えをお願いいたします。 <詳細> ・400個の入力EXCELファイルには、『Participant List』、『特定類型』の2つのシートが入っており、今回の入力用シートは『Participant List』になります。 ・今回抜き出したい記載は、『Participant List』シート中のB列~列、8行目~50行の範囲の記載になります。 ・『Participant List』シート中のB列の6行目と7行目のセルは結合しており、各列のタイトルは以下の通りになっています。 このタイトル名を出力ファイルの1行目へデータの各列のタイトルとして付けて、2行目以降より400個の入力ファイル中のデータを連結したいです。 B列:6,7行=『職員番号(nimsID)』 C列:6,7行=『名前(Name)』 D列:6,7行=『部門(Research Center, Division)』 E列:6,7行=『グループ(Group)』 F列:6,7行=『役職(Title)』 G列:6,7行=『開始年月(Start)』 H列:6,7行=『終了年月(End)』 ・出力ファイル名や出力のシート名は特に考えておりません。 ・入力データは以下ような記載のフォーマットになります。 B列=『職員番号(nimsID)』 例:14769 C列=『名前(Name)』 例:田中 一郎 D列=『部門(Research Center, Division)』 例:総合開発・情報部門 E列=『グループ(Group)』 例:科学リーダー F列=『役職(Title)』 例:リーダ- G列=『開始年月(Start)』 例:2023/5/1 H列=『終了年月(End)』 例:2023/5/31 ・入力ファイル名の例=科学登録者_23BB3001.xlsx 科学登録者_23BB3005.xlsx 科学登録者_23BB3405.xlsx ※拙い口足らずな説明となってしまいましたが、どうぞ宜しくお願い致します。
- ベストアンサー
- Visual Basic
お礼
何度も拙い質問に対して丁寧なご回答を有り難うございました。飛び飛びの場合の対応も施し、非課税費目も表示される様になりました。 ただこれも飛び飛びに入力されていることが原因かと思うのですが、まだ上手く反映されないデータが存在してしまいます。 そしてエクスポートするデータの環境設定をし直さないといけない部分が見つかり 少し気持ちが沈んでおります。 またご相談させて頂くかと思いますが、今回の質問は長くなってしまいますので一旦終了させて頂こうと思います。 お忙しい中、貴重なお時間を頂きまして有り難うございました。