Page 451 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ご教授お願いします monst 02/12/10(火) 13:52 ┗Re:ご教授お願いします Jaka 02/12/11(水) 12:02 ┗Re:ご教授お願いします monst 02/12/12(木) 1:44 ┗Re:ご教授お願いします Jaka 02/12/12(木) 9:38 ┣ふろく Jaka 02/12/12(木) 10:40 ┃ ┗Re:ふろく monst 02/12/12(木) 11:07 ┗Re:ご教授お願いします monst 02/12/12(木) 11:06 ─────────────────────────────────────── ■題名 : ご教授お願いします ■名前 : monst ■日付 : 02/12/10(火) 13:52 -------------------------------------------------------------------------
VBA初心者です。よろしくお願いします。 csvファイルを開いて、 新しいシートを作成し、新しいシートに名前を付けます。 -0.100〜0.200まで0.002刻みで作りたいのです。 また、この数値を用いて、セルの処理をさせたいです。 実際に処理をさせる内容は以下の通りです。 Sub Macro1() Sheets("Sheet1").Select Sheets.Add Sheets("Sheet4").Select Sheets("Sheet4").Name = "0.200" ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.2,0.2,Sheet1!RC)" Range("A1").Select Selection.AutoFill Destination:=Range("A1:A25"), Type:=xlFillDefault Range("A1:A25").Select Selection.Copy Range("A1:J1").Select ActiveSheet.Paste Application.CutCopyMode = False ChDir "C:\Documents and Settings\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\デスクトップ\0.200.csv", FileFormat:= _ xlCSV, CreateBackup:=False Sheets("0.200").Select ActiveWindow.SelectedSheets.Delete End Sub やりたいことはこんな感じで、変数を使って回そうと思ってるんですが、 どうやって回していけばいいのかわかりません。 理想的には、シートを一つ作成→処理をさせる→シートを保存→シートを破棄 これを繰り返させるのがメモリ的にいいように思えます。 わかりにくいかと思いますが教えていただけませんでしょうか? どうかご教授お願いいたします。 |
こんにちは。 良く解ってないけど..。 Sub Macro2() Dim ShName As String, i As Single Application.DisplayAlerts = False For i = 0.1 To 0.2 Step 0.002 ShName = Format(i, "0.000") Sheets.Add.Name = ShName ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.2,0.2,Sheet1!RC)" Range("A1").AutoFill Destination:=Range("A1:A25"), Type:=xlFillDefault Range("A1:A25").Copy Range("A1:J1").Select ActiveSheet.Paste Application.CutCopyMode = False ChDir "C:\Documents and Settings\デスクトップ" ActiveWorkbook.SaveAs FileName:= _ "C:\Documents and Settings\デスクトップ\" & ShName & ".csv", FileFormat:= _ xlCSV, CreateBackup:=False Sheets(ShName).Delete Next Application.DisplayAlerts = True End Sub |
こんばんわ。 えっと、今回してみたのですが、 > ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.2,0.2,Sheet1!RC)" の部分の0.2と言うところも変数iで回したいのですが、どうしたらいいのでしょうか? つまり、0.1で保存するファイルは、 ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.1,0.1,Sheet1!RC)" としたいです。 ほかのやりたいことは完全に合ってます。 感謝いたします。ありがとうございます。 |
▼monst さん: >> ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.2,0.2,Sheet1!RC)" > >の部分の0.2と言うところも変数iで回したいのですが、どうしたらいいのでしょうか? > >つまり、0.1で保存するファイルは、 >ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>0.1,0.1,Sheet1!RC)" >としたいです。 変数以外を文字として扱って、&でつなげてやれば良いんです。 ActiveCell.FormulaR1C1 = "=IF(Sheet1!RC>" & i & "," & i & ",Sheet1!RC)" |
パソコンの小数点計算は、私より遥かにバカな所がありますので、あまり信用しない方が良いと思います。 どこで読んだのか忘れちゃったけど。 こんな計算も出来ない。(CPUの浮動小数点の性で、正確な答えが出せないらしい。Win、Macとも) =0.5-0.4-0.1+0 =0.5-0.4-0.1-0 |
今、試してみたらほんとに0にならないんですね・・・ なかなかむずかしいもんですねぇ。。 |
ありがとうございました。 完璧でした。 また、このようなことがあったらよろしくお願いします。 |