白紙のSheet1に、下記の3法則により数値を記入するVBAをご教示ください。
(1) A列に20001から24000まで連番を振る、
ただし連番は、単に1ずつでなく同じ番号が12回振られて1増加する
(2) B列に2004年12月から2005年11月までの年月を表す6桁数値を12か月分コピーを繰り返す
(3) C列に、A列とB列を結合して数値変換する式を入力(式でなくてもよいですが)
例:C1列は、
Range("C1").Select
ActiveCell.FormulaR1C1 = "=(RC[-2]&RC[-1])*1"
A列 B列 C列
20001 200412 20001200412
20001 200501 20001200501
20001 200502 20001200502
20001 200503 20001200503
20001 200504 20001200504
20001 200505 20001200505
20001 200506 20001200506
20001 200507 20001200507
20001 200508 20001200508
20001 200509 20001200509
20001 200510 20001200510
20001 200511 20001200511
20002 200412 20002200412
20002 200501 20002200501
20002 200502 20002200502
20002 200503 20002200503
20002 200504 20002200504
:
24000 200511 24000200511
PHPでなら下記のようにして実現できるのですが、移植できません…
<?php
for($i=20001;$i<=24000;$i++){
for ($j=1; $j<=12;$j++){
if ($j==1){
$body .= $i . "200412" . $i . "200412<br>\n";
} elseif ( $j == 2 ) {
$body .= $i . "200501" . $i . "200501<br>\n";
} elseif ( $j == 3 ) {
【途中ばっさり省略】
} elseif ( $j == 12 ) {
$body .= $i . "200511" . $i . "200511<br>\n";
}
}
}
?>
<html>
<body>
<?= $body ?>
</body>
</html>
No.1ベストアンサー
- 回答日時:
>PHPでなら下記のようにして実現できるのですが、移植できません…
CSV出力して読み込ませる方法もありますが・・・?
VBAなら
Sub tes1()
Dim i As Long
Dim j As Integer
Dim ct As Long
ct = 1
For i = 20001 To 24000
For j = 1 To 12
Cells(ct, 1) = i
If j = 1 Then
Cells(ct, 2) = "200412"
Else
Cells(ct, 2) = "2005" & Format(j - 1, "00")
End If
Cells(ct, 3) = Cells(ct, 1) & Cells(ct, 2)
ct = ct + 1
Next
Next
End Sub
hana-hana3さん、レスありがとうございました。
>CSV出力して読み込ませる方法もありますが・・・?
それができれば、本件で作るテキストを別途用意しておいて
読み込ませれば本マクロは不要でしたね・・・
ともあれ、また別機会に質問させていただきます。
>VBAなら
For構文の書き方がよくわからなかったのですが
大変よく理解できました。活用させていただきます。ありがとうございました。
No.2
- 回答日時:
Dim a(47999, 2)
For i = 0 To (UBound(a, 1) + 1) / 12 - 1
For j = 0 To 11
tmp1 = CStr(20001 + i)
tmp2 = Format(DateSerial(2004, 12 + j, 1), "yyyymm")
a(i * 12 + j, 0) = tmp1
a(i * 12 + j, 1) = tmp2
a(i * 12 + j, 2) = tmp1 + tmp2
Next
Next
Range(Cells(1, 1), Cells(UBound(a, 1) + 1, UBound(a, 2) + 1)).Value = a
yambejpさん、さすが、分野を問わない博学ぶり、脱帽です。
本当にありがとうございます。
yyyymmの連続性に着目いただき、連続的に処理するというわけですね。
すごい効率よさそうです。
a(47999, 2)の47999は、Excelの日付のシリアル値かとおもいましたが
2031/5/31 ですね、突き止められませんでしたが、調べてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) VBA EOMonthについて 5 2023/02/10 11:51
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
Cellsのかっこの中はどっちが行...
-
vbaでシートより100より大きい...
-
文字列の結合を空白行まで実行
-
セルに値が入っていた時の処理
-
空白セルをとばして転記
-
【Excel VBA】 B列に特定の文字...
-
VBAのFind関数で結合セルを検索...
-
VBAで指定範囲内の空白セルを左...
-
マクロ 最終列をコピーして最終...
-
マクロについて。S列の途中から...
-
リストボックス セルの値を取得...
-
VBAを使って検索したセルをコピ...
-
マクロ 関数を使った抽出でエラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報