「001xyz001xyz001」「002xyz001xyz002」「003xyz001xyz003」・・・と、自動で左右の数値だけを1つずつ同時に上げて「099xyz001xyz099」くらいまで、作る方法はありますか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/10/25 21:08:30
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント40pt

Javascriptならこんな感じでどうでしょう。

<html>
<body>
<textarea id="out" style="width:100%; height:100%"></textarea>
</body>
<script type="text/javascript">
var out = document.getElementById('out');
for(var i = 0; i < 1000; i++) {
	var i2 = ("000" + i).replace(/.*(\d\d\d)$/, '$1');
	out.value += i2 + "xyz001xyz" + i2 + "\r\n";
}
</script>
</html>
id:piko-piko

再びの、回答ありがとうございます。


ジャバスクリプトの使い方もわからないのですが、素晴らしい回答なのだと思います。

ほかに、フリーソフトやエクセルなどで、方法があればお願いします。

2007/10/25 19:39:10

その他の回答4件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント20pt

シェルスクリプトだとこんな感じでしょうか。

#!/bin/sh
for i in `seq -w 999`; do echo "${i}xyz001xyz${i}"; done
id:piko-piko

y-kawazさん、回答ありがとうございます。


シェルスクリプトというものの使い方がわからないのですが、素晴らしい回答なのだと思います。

2007/10/25 19:29:42
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226ここでベストアンサー

ポイント40pt

Javascriptならこんな感じでどうでしょう。

<html>
<body>
<textarea id="out" style="width:100%; height:100%"></textarea>
</body>
<script type="text/javascript">
var out = document.getElementById('out');
for(var i = 0; i < 1000; i++) {
	var i2 = ("000" + i).replace(/.*(\d\d\d)$/, '$1');
	out.value += i2 + "xyz001xyz" + i2 + "\r\n";
}
</script>
</html>
id:piko-piko

再びの、回答ありがとうございます。


ジャバスクリプトの使い方もわからないのですが、素晴らしい回答なのだと思います。

ほかに、フリーソフトやエクセルなどで、方法があればお願いします。

2007/10/25 19:39:10
id:Bookmarker No.3

回答回数191ベストアンサー獲得回数34

ポイント20pt

こうですか?

#!ruby

def succ_until_n9(str)
  raise ArgumentError, str unless /\A(\d\d+)(.+)\1\z/ =~ str
  val_str = $1
  mid_str = $2
  end_str = val_str.clone
  (1...end_str.size).step {|v| end_str[v] = '9'}
  begin
    puts val_str + mid_str + val_str
  end while val_str.succ! <= end_str
end

succ_until_n9('001xyz001xyz001')
id:piko-piko

Bookmarkerさん、回答ありがとうございます。


ちょっと難しくてやり方がわかりませんが、素晴らしい回答なのだと思います。

2007/10/25 21:03:54
id:ymlab No.4

回答回数508ベストアンサー獲得回数34

ポイント30pt

Microsoft Excelや、OpenOfficeを利用します。

1.セルA1に、半角シフトの7を押してシングルクォーテーションを入力して、001とします。

具体的には、セルA1に '001 と入力します。

2.セルA2に、'002とします。

3.セルA1とセルA2をマウスでドラッグして選択して、選択した範囲の右下の■を下の方にぐりぐりっと、

ドラッグアンドドロップします。

4.セルB1にXYZと入力し、それを下までコピーしていきます。

そんなかんじで作れます。ただし、このままコピペしたら、

001 XYZ

002 XYZ

という感じで、セルの間にタブが入ってしまいますので、「タブ」を「何にも入力しないに」置換すればよいでしょう。

タブを置換する方法は、viや秀丸などのエディタは簡単にできますが、

メモ帳ではやり方をしりません。

もし、エディタをお持ちでない場合は、タブで置換することをあきらめて、CSV形式で保存します。

方法は、

[ファイル]-[名前をつけて保存]-ファイルの種類で、CSV(カンマきざみ)の方(タブ刻みもあるので注意)

を選択して保存します。

そうすると、セルの間は,(カンマ刻み)ですので、「カンマ」をメモ帳で「何にも入力しない」に置換すれば解決できます。

ただ、非常に面倒ですので、

id:y-kawaz さんの方法がよいでしょう。特にsedはcygwinとかそういうのをインストールしないといけませんが、

javascriptは、Windowsをお使いであれば、標準で使えます。

id:y-kawaz さんのコードをメモ帳にコピペして、保存する際、aaa.html の様に拡張子をhtml にして保存した後、

ダブルクリックして立ち上げると、画面に登場します。

id:piko-piko

tateisuさん、回答ありがとうございました。


おお~ 出来た!

2007/10/25 21:03:07
id:tateisu No.5

回答回数1ベストアンサー獲得回数0

ポイント30pt

回答2の内容をメモ帳で保存して、ファイルの拡張子を.HTMLにしてブラウザで開いてみましょう。

id:piko-piko

tateisuさん、回答ありがとうございました。


おお~ 出来た!

2007/10/25 21:03:13
  • id:airplant
    Excelで作るなら「&」で文字が連結できますので、一発で作れます。

    例えば、セルA1に下記の数式を入れる
    =TEXT(ROW(),"000")&"xyz001xyz"&TEXT(ROW(),"000")
    好きな分下へコピーする。

    もしくは、No.4さんと同じように数字001~099を作っておいて、後は文字列の連結をすれば、一発でExcel内に要望の文字列が作れます(下記の例ならC列にできる)。

     A  B      C
    '001 xyz001xyz =A1&B1&A1
    '002 xyz001xyz =A2&B2&A2

    ただ、これだとA列はドラッグ、B列はコピーでやり方が違うので、少し注意が必要です。文字列+数字だと、勝手にインクリメントされてしまいます。
  • id:piko-piko
    ymlabさん、すみません。名前が間違っていました。

    tateisuさんとymlabさんの、一致する回答を試して成功したので、ミスったようです。すみませんでした。
  • id:piko-piko
    airplantさん、コメントありがとうございます。


    おお~ すごい! エクセルで出来ました。

この質問への反応(ブックマークコメント)

トラックバック

  • 士業日記 2007-10-26 10:38:38
    question:1193301279 連番の作り方 昨日は、ゴミを出し忘れたorz そして今朝は大雨なのでゴミは出さないorz まっいいか。その分、産業翻訳のアルバイトの方で8000円/1日かせいだ(半年
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません