過去ログ

                                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

やりたいことはこんな感じで、変数を使って回そうと思ってるんですが、
どうやって回していけばいいのかわかりません。

理想的には、シートを一つ作成→処理をさせる→シートを保存→シートを破棄
これを繰り返させるのがメモリ的にいいように思えます。

わかりにくいかと思いますが教えていただけませんでしょうか?
どうかご教授お願いいたします。
 ───────────────────────────────────────  ■題名 : Re:ご教授お願いします  ■名前 : Jaka  ■日付 : 02/12/11(水) 12:02  -------------------------------------------------------------------------
   こんにちは。
良く解ってないけど..。

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
 ───────────────────────────────────────  ■題名 : Re:ご教授お願いします  ■名前 : monst  ■日付 : 02/12/12(木) 1:44  -------------------------------------------------------------------------
   こんばんわ。

えっと、今回してみたのですが、

>    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)"
としたいです。


ほかのやりたいことは完全に合ってます。
感謝いたします。ありがとうございます。
 ───────────────────────────────────────  ■題名 : Re:ご教授お願いします  ■名前 : Jaka  ■日付 : 02/12/12(木) 9:38  -------------------------------------------------------------------------
   ▼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)"
 ───────────────────────────────────────  ■題名 : ふろく  ■名前 : Jaka  ■日付 : 02/12/12(木) 10:40  -------------------------------------------------------------------------
   パソコンの小数点計算は、私より遥かにバカな所がありますので、あまり信用しない方が良いと思います。
どこで読んだのか忘れちゃったけど。
こんな計算も出来ない。(CPUの浮動小数点の性で、正確な答えが出せないらしい。Win、Macとも)

=0.5-0.4-0.1+0
=0.5-0.4-0.1-0
 ───────────────────────────────────────  ■題名 : Re:ふろく  ■名前 : monst  ■日付 : 02/12/12(木) 11:07  -------------------------------------------------------------------------
   今、試してみたらほんとに0にならないんですね・・・

なかなかむずかしいもんですねぇ。。
 ───────────────────────────────────────  ■題名 : Re:ご教授お願いします  ■名前 : monst  ■日付 : 02/12/12(木) 11:06  -------------------------------------------------------------------------
   ありがとうございました。
完璧でした。

また、このようなことがあったらよろしくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 451