• 締切済み

エクセル2000でこんなマクロを組みたいのですが・・・

日々あるデータがCSV形式で送られてきます。 内容はA~AFまでのデータがあります。 そこでマクロを組みたいのです。 マクロを実行した後に画面を見ながら違うソフトに入力処理を行い、 終了後に違うマクロを実行した上で印刷をしたいと考えています。 先ず今回は第一段階のマクロを御教授願えればと思います。 A~AFのうち、残したいのはBDEGKNPQRSVYZACの 14列で、それ以外はすべて削除する。 Dには顧客名が入っています。Eには部署名が入っています。 但しEは空白の場合もあります。Dには必ず名前が入っています。 そのD,Eを結合させたい。結合させた後の顧客名、部署名の間には スペースは必要ありませんが、全体を左寄せにする。 KNSVYZには数字が入力されていますが「,」がありません。 それぞれ「,」を入れたい。 それとSVYZのみ一番下に列の合計を出したい。 以上の内容ですが補足が必要なら申し付け下さい。 宜しくお願い致します。

みんなの回答

  • argument
  • ベストアンサー率63% (21/33)
回答No.4

はじめまして joy9999 さん >エクセル2000でこんなマクロを組みたいのですが・・・ 組めば良いでは無いでしょうか?もちろん貴方がですよ。 >14列で、それ以外はすべて削除する。 というのはデータ内容を消すのか列を削除することなのか データクリアならば Columns("C:C").Select: Selection.ClearContents 列削除ならが良いでしょう。 Columns("C:C").Select: Selection.Delete Shift:=xlToLeft 配列にして指定forなどで列を消しましょう。もちろんA:Cなどの指定でもよいでしょう。 >そのD,Eを結合させたい。結合させた後の顧客名、部署名の間にはスペースは必要ありませんが、全体を左寄せにする。 はい。書式が入っていますね?しか元データはCSVらしいので出力後はxls形式ですね。 DとEのうち長いほうにあわせてセルの内容を連結していきましょう range("D"&i).value=range("D"&i).value & range("E"&i).value _ range("E"&i).value="" 行数は Range("D65536").End(xlUp).Row などとすれば簡単に最終行を取得できます。 そして ツール>新しいマクロ>セルを指定して右クリック> セルの書式と設定>配置タブ>横位置>左詰め(インデント) マクロを終了させる。 はい。左寄せさせるマクロが生成できました。これを処理に反映させてください。 >KNSVYZには数字が入力されていますが「,」がありません。それぞれ「,」を入れたい。 ただ数値をにカンマをつけたいと言われてもわかりません。値ひとつおきにカンマを挿入する処理でもいいですか? まぁ、通常の数値ならマクロ登録しながら書式を設定しても良いでしょう。 または値をlenで全体の長さをしらべ区切りたい値,(カンマ)を長さで割って区切り文字挟みましょう。まぁ通常数値なら3おきにでしょうがどのように扱いたいかわかりません。 >それとSVYZのみ一番下に列の合計を出したい。 その行の最後にsum関数をセルに挿入すればよいでしょう。 もちろん、その行末端までforで値を連結し続けて計算でもかまいません。 はい。初心者程度のVBAの能力があれば上記を参考に処理を並べるだけでこの問題は解決します。 もしもこれで問題解決できないようであれば基礎知識が足りません。 処理のメンテナンスもできないでしょう。 ANo.3さんの言うとおりここは下請けコーナーでもVBAのサポートセンターでもありません。 貴方の質問がどのようなものなのかは下記が参考になります。 http://help.okwave.jp/okwave/beginner/prohibition.html 【その他迷惑行為】>■丸投げ・依頼 の項などが参考に成るでしょう。 本来VBAもといプログラム・スクリプトカテゴリではあなた自身が 「こういう処理でここまでできましたがこういう処理が解決できません この処理を解決する方法または記述をおしえていただけないでしょうか?」という流れが正しい質問の仕方となります。 問題解決方法・貴方の質問の何が悪かったかも含め極力丁寧に説明したつもりです。 追加処理・処理違い・補足等あればいってください。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

この質問はVBAコードを教えろという、丸投げの質問です。 このコーナーの規約上歓迎されません。 もう少し勉強して、問題点を絞って質問すべきです。 したいということを書けば、コードを挙げてくれる、下請け的コーナーになってはならないと思います。 内容的にも、テキストファイルの読み込み Split関数で分離 セルの結合と 表示形式の設定程度で、 解説書にもWEBにも載っていないようなものを必要としないと思います。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

適当にアレンジしてください。 Sub test() Dim r As Long, c As Long, i As Long Dim d() As String Const del = "A:A,C:C,F:F,H:J,L:M,O:O,T:U,W:X,AA:AB,AD:AF" '//←削除する列範囲 Const comma = "K,N,S,V,Y,Z" '//←カンマ表示する列 With ActiveSheet '//カンマ表示処理と合計表示  d = Split(comma, ",")  For i = 0 To UBound(d)   c = .Range(d(i) & "1").Column   r = .Cells(Rows.Count, c).End(xlUp).Row   If i > 1 Then    .Cells(r + 1, c).FormulaR1C1 = "=SUM(R[" & Str(-r) & "]C:R[-1]C)"    r = r + 1   End If   .Cells(1, c).Resize(r, 1).NumberFormatLocal = "#,##0"  Next i '//不要行削除  d = Split(del, ",")  For r = UBound(d) To 0 Step -1   .Range(d(r)).Delete  Next r '//セル結合  For r = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1   .Cells(r, 2).Value = .Cells(r, 2).Text & .Cells(r, 3).Text   .Cells(r, 3).Value = ""   .Cells(r, 2).Resize(1, 2).MergeCells = True   .Cells(r, 2).NumberFormatLocal = "@"   .Cells(, 2).HorizontalAlignment = xlGeneral  Next r End With End Sub

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

マクロの自動記録で大体の所は出来そうですが。。。 そこから不明な部分に質問を絞られては。