• ベストアンサー

VBA、値のずらし計算

benelliの回答

  • benelli
  • ベストアンサー率51% (78/152)
回答No.1

お望みの答えが正確にはわかりませんが、こんな感じでよろしいでしょうか?  利用目的はよく分かりませんが、適当に応用してください。 "C:\FileA.txt"と"C:\FileB.txt"は必要にあわせて変えてください。 '----------------------------------------------------- Sub main() 'メイン関数。実際に実行させる部分 For i = 1 To 5 Call fairuyondezureru Next End Sub Sub fairuyondezureru() 'オリジナル関数。処理を行う部分 'いろいろ宣言 Dim dat1int(10) Dim dat2int(10) Dim datrange FileA = "C:\FileA.txt" FileB = "C:\FileB.txt" datrange = 9 Const ForReading = 1 Const ForWriting = 2 'FileA読み込み Set objFS = CreateObject("Scripting.FileSystemObject") Set mydat1 = objFS.opentextfile(FileA, ForReading) For i = 0 To 9 If mydat1.AtEndOfLine = True Then datrange = i - 1 Exit For End If dat1int(i) = CInt(mydat1.ReadLine) Next mydat1.Close 'FileB読み込み Set mydat2 = objFS.opentextfile(FileB, ForReading) For i = 0 To datrange If mydat2.AtEndOfLine = True Then datrange = i - 1 Exit For End If dat2int(i) = CInt(mydat2.ReadLine) Next mydat2.Close '読み込んだふたつの値を計算してなんとなく表示させてみる tempstr = "" For i = 0 To datrange tempstr = tempstr & dat1int(i) & "+" & dat2int(i) & "=" & dat1int(i) + dat2int(i) & vbNewLine Next MsgBox tempstr, vbOKOnly, "ひとまず読み込み結果報告" 'FileBの内容を一個ずらして上書き書きこみ Set mydat2 = objFS.opentextfile(FileB, ForWriting, True) For i = 1 To datrange mydat2.WriteLine dat2int(i) Next mydat2.Close End Sub '-----------------------------------------------------

takihirode
質問者

お礼

ありがとうございます。今試させていただきましたら非常に参考になりました。説明不足で申し訳ありませんでした。結果をEXCELに表示させたっかたのですがそれは自分でがんばってみようと思います。本当にありがとうございました。また何かわからないことがあればよろしくお願いします。

関連するQ&A

  • VBA 別シートの計算表

    Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010

  • VBAで計算式の貼り付け

    おはようございます。 エクセルで質問させて頂きます。 A列に値入力で任意に数字を入力していきます。そしてB列にA列*10の計算式を入力したいのですが、A列のデーターは毎日手入力で入力していく為、データー数は増えていきます。 そした時にあらかじめB列に計算式を入れておくとファイル自体が大きくなる為に計算式自体を入れておく事を避けたいのです。 そこでVBAにてA列にデーターが入力されている行だけB列に先ほどの計算式を入力するといった事はどうすればいいでしょうか? 何分、VBAの勉強をし始めたところで知識不足ですゆえご指導お願い致します。

  • 文字列で読み込んだ計算式で値を計算

    VBAで数値と式を文字列で受け取り、式に従って値を返す関数を作成したいと考えています。 ex KEISANという関数に対し、値と計算式を与え結果を求める A=50 B=80 C=10 SIKI="B+A-C" KEKKA = KEISAN(A,B,C,SIKI) KEKKAには、式に従い120が返る このA~C及びSIKI(式)は外部ファイルから読み込みます。式には加算か減算しかありません。 どなたか、良いアイデアありましたら、教えて下さい。

  • VBAの計算式で値を検出し別シートに貼り付ける

    例でA.xls sheet1に添付のデータがありB.xls sheet1のB列に検索値がありC列に記載のとおりの計算式が入力されています。関数入力はC2セルにの計算式を入力しそれを元にオートフィルでC3以降入力しているが膨大な計算式になりExcelを開いたりするのに処理に時間がかかりすぎる為セルに計算式をいれるのではなくVBAで計算式を入力しオートフィルみたいに連続した計算の値のみを入力したいのですがコードが解る方宜しくお願いします。

  • Excel VBA 値取得について

    お世話になります。 どなたかお力をお貸しください。 Excel2003 VBAでプログラムを組んでおり、エクセルのシートをデータベース代わりに利用しています。 複数のブック散乱している10万個近くのテキストボックスの値を、 「A」というブックの「シート1」のセルに格納して行きたいと思っております。 値の格納方法としては、「A」ブックの「シート1」の セルA1からA2、A3…A列最終行(6万強)まで縦の並びにデータを格納していきます。 ただし、「シート1」に格納したい値は10万個近くあるので、 A列だけでは足りなくなります。 A列の最終行まで値を格納し終えたら、自動的にB列に移動して、 セルB1からB2、B3…B列最終行(6万強)という遷移させていきたいのです。 A列のみに格納していくのであれば、理解できるのですが、 自動遷移がわかりません。 For i = 0 To 最終行(6万強) シート1.Range("A" & i) = 参照元 Next i よろしくお願いします。

  • VBAを使わず、計算式を使いまわし

    エクセルで勤務表を作っています。 たとえば、B2に出勤時間を、C2に退社時間を入力すると、D2に勤務時間が表示されます。 現在の計算手法は、A1、B1の値を別セルからそれぞれ参照し、計算をし、結果を別セルに表示させます。その結果をC1セルが参照して、C1セルに表示させるような手法をとっています。 ※話を簡単にするための一例です。この程度ならダイレクトにC1に結果を表示させることは簡単ですが、実際にはさまざまな条件があるため、計算はもっと複雑です。 この手法だと、同じ計算式を日にちごとに用意しなければいけません。 計算式がそこそこ複雑なので、毎日分用意すると、メンテナンスやファイルサイズの問題などあまり よろしくないと思っています。 そこで、VBAのFunctionプロシージャのように、計算式は1セットのみで、毎日の出勤、退勤時間を引数で渡して、結果を返すような方法はできないのでしょうか?

  • VBAで配列の計算

    VBAで配列同士の計算をすることはできますか? たとえば、配列A,B,Cがあったときに C=A+Bみたいな記述はできるのでしょうか?

  • Excelで値貼り出力をするVBAは作れますか?

    Excelで値貼り出力をするVBAは作れますか? Excel2003を業務で使用しています。 SUMPRODUCTなどのいろんな関数を使って売上げ報告書を集計し、 取引先に送っているのですが、計算式や参照式でファイルが重くなっているので、 値貼りをしたファイルを作成したいのです。 そこで、VBAを使って以下のどちらかを実現することは可能でしょうか。 ・報告書の全シートの全書式(罫線・色)と値を別ファイルに出力 ・書式のみ、全て空欄の別ファイルに全シートを値貼り これが出来るととても助かるので、ご教示ください。宜しくお願いいたします。

  • エクセルのVBAで数値を時刻の値へ変換するには?

    VBAは初心者です。宜しくお願いします。 シート1のA1に840、B1に1730と単なる数字の値が入っております。 VBAを実行すると シート2のA1に8:40、B2に17:30と時刻の値として取り扱えるように 表示させるには、どうすればよろしのでしょうか?

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。