• 締切済み

エクセルマクロ 条件設定処理と名称変更保存

みなさまいつも大変お世話になっています。 またもやCSV形式なのですが、拡張子がCSVではありません (1)A15行目に%DATAとありそれ以降の行を対象としたいのですが  いつも15行目なのかどうかが、不定ですが%DATAと書かれてある行以降というのは間違いありません。 (2)H16からH列に数値が記入されてありそれに80を加算したい (3)A16からは、A,B,C,Dと入力されてあり Dの行に対しては加算の処理を行わず元々の数値としたい。 (4)%DATAと書いてある行以下の量は不定量ですが最終行には*が入っています (5)ファイル名は****-DRF.CHKを****-DRR.CHKとして保存したい 可能ならばフォルダー内の対象ファイルを自動で処理できると ありがたいです。 いつもお願い事ばかりで申し訳ありませんが よろしくお願いします

みんなの回答

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.3

はじめまして >可能ならばフォルダー内の対象ファイルを自動で処理できると ありがたいです。 この部分には「dir」関数を使用します。 例えば、対象ファイルがあるフォルダ内のテキストファイルだとしたら Filename = Dir([フォルダのフルパス] & "\*.txt") Do While Filename <> "" [処理] Filename = Dir() Loop でできます。Dir関数は引数を省略すると、前回と同じ条件で次のファイルを探します。 VBAはヘルプが丁寧なので、詳細はヘルプで確認してください。

hou66
質問者

お礼

ありがとうございます。

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

課題の丸投げではないですか。規約違反。 それほど難しい話題ではない。 A列の中で%DATAという行をFindメソッドで見つけ、その行の次行以下最終行までの全、判別処理は行うわけだ) %DATAのある初出行 Sub test03() r = Range("A1:A100").Find("%DATA").Row MsgBox r End Sub 最下行は Sub test04() d = Range("A65536").End(xlUp).Row MsgBox d End Sub を参考に。 >A16からは、A,B,C,Dと入力されてあり Dの行に対しては加算の処理を行わず A列各行にはA16からは、A,B,C,Dのどれかが入力されているということか。 それなら If Cells(i,"A")<>"D" Then (処理) End If など参考にしてください。 >)ファイル名は****-DRF.CHKを****-DRR.CHKとして保存したい 「SaveAs VBA」でWEBを照会のこと。 http://excelvba.pc-users.net/fol4/4_4.html など多数 フォルダ内の全ファイル名を捕まえるコードは、WEBで「フォルダ ファイル名 VBA」ででも照会してみること。

hou66
質問者

お礼

ありがとうございます。 とりあえず、Findメソッドも使用したほうが良いとは思うのですが そこまで考えがるのをやめ A15にあるものとして作業し H16から以降のみ作業行うようにしました。 過去多くの方々から教わった内容で処理しました。 Sub test01() Dim rng As Range Columns("i:i").Insert Shift:=xlToRight Set rng = Range("h16", Range("h65536").End(xlUp)) rng.Offset(, 1).Formula = _ "=IF(RC[-8]=""D"",RC[-1],RC[-1]+80)" rng.Offset(, 1).Value = rng.Offset(, 1).Value Columns("H:H").Select Selection.Delete Shift:=xlToLeft End Sub あとは、ファイル保存と一括処理の部分になるかと思います。 結構急いでいたものですから 丸投げみたいな形になってしまいました

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

・A列の値を順次取得する。 ・A列に%DATAがあったらフラグを立てる。 ・フラグが立っている状態で、A列の値がA,B,Cの時は同行のH列の値に  +80、Dの時は何もしない。 ・A列の値が*になったら終了。 まずひとつのシートに対して、この様な作業を行なうようコード化する。 上手くいったらフォルダー内のファイルに対して、順次同じ作業を行なうようにする。 保存する時は名前を変更するコードを作る。 と言ったように順序立てて行なってみては如何でしょうか。

hou66
質問者

お礼

ありがとうございます。

関連するQ&A