こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL2007のオートフィル機能でABC利用したい

お世話になります。困っています。
連続データもしくは簡単であれば関数を使用して次のことをしたいです。

0-9までの数字とA-Zまでを使用した4列を作りたいのです。
単純にオートフィルを行うと、どうしても英数字での羅列が
おかしくなってしまい、一度にオートフィルすることができません。
どのようにしたら連続データを一度に作成することができるでしょうか?
困っているので皆様の知恵を拝借させてください><

↓こんな感じに作りたいです。単純に100万通り以上ある(?)ので、
シートを2枚に渡って作成しようかと思っています。
0000から
0001

0009
000A
000B

000X
0010

ZZZZまで

投稿日時 - 2007-09-11 11:47:20

QNo.3335256

すぐに回答ほしいです

質問者が選んだベストアンサー

数値とアルファベットで36進表示をするということになりますね。
計算上は
一の位=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(数値,36)+1,1)
十の位=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(数値/36),36)+1,1)
百の位=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(数値/36^2),36)+1,1)
千の位=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(数値/36^3),36)+1,1)
で求めるのが可能ですが大変です。

ユーザー定義関数を使うのなら
「ツール」「マクロ」「VisualBasicEditor」で「挿入」「標準モジュール」した場所に下記を貼り付けて
Function CHG36(NUM)
CHG36 = Null
CXX = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If IsNumeric(NUM) Then
N1 = NUM Mod 36 + 1
N2 = Int(NUM / 36) Mod 36 + 1
N3 = Int(NUM / 36 ^ 2) Mod 36 + 1
N4 = Int(NUM / 36 ^ 3) Mod 36 + 1
CHG36 = Mid(CXX, N4, 1) & Mid(CXX, N3, 1) & Mid(CXX, N2, 1) & Mid(CXX, N1, 1)
End If
End Function

としてセル上に
=CHG36(ROW()-1)
とすれば行数-1の数値を4桁の36進数値(文字形式)に変換します。

投稿日時 - 2007-09-11 14:18:43

補足

mshr1962さま大変申し訳ございません。
数時間格闘していましたが解決しませんでした。。。

教えていただいたとおりに「Function CHG36(NUM)~End Function」
までペーストしてVisualBasicEditorで標準モジュールを
作成したのですが、セルに=CHG36(ROW()-1)とすると、
#REF!となってしまいました><。

私の手順が間違っているのかと存じますが、原因がわかりません。
ペーストまでしたら、「終了してMicrosoft Excelに戻る」
だけでよろしいのでしょうか?
ヘルプを参考にする限り、インポートやエクスポートは
必要ないように思って手はつけていないのですが。。。
お手すきの時にでもお返事頂ければ幸いです。
出来の悪い質問者で申し訳ありません><

投稿日時 - 2007-09-11 18:45:16

お礼

mshr1962さま早速のお返事ありがとうございます。
具体的に関数まで教えて頂いて大変恐縮です。
mshr1962さまの云われたように実行しようとしたのですが、
2007では「ツール」ってどこにあったっけな?とふと思ってしまいました。
これからチャレンジしてみます!
本当にご丁寧にありがとうございます^^重ねて感謝致します。

投稿日時 - 2007-09-11 15:45:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

横から失礼します。

私の環境では#2さんのプログラムでうまく行きますが、
お急ぎであれば、数式で処理されてはいかが?
これも#2さんがご提示されたものとほぼ同じですが…。

4行で一つの数式ですので、セルではなく数式バーにまとめて貼り付けてください。

●1枚目のシート:"0000"からスタート

第1行目の任意のセルを
=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1)/36^3),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1)/36^2),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1)/36^1),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1)/36^0),36)+1,1)
として、"GZZZ"が返るまでフィル。

●2枚目のシート:"H000"からスタート

第1行目の任意のセルを
=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1+839808)/36^3),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1+839808)/36^2),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1+839808)/36^1),36)+1,1)
&MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT((ROW()-1+839808)/36^0),36)+1,1)
として、"ZZZZ"が返るまでフィル。

※839808の部分を適当にいじれば、スタートの値を指定できます。
 ちなみに、839808=18*36*36*36なので、"H000"になります。

Excel2003で動作確認済

(この回答には新規情報はほとんどないので、ポイント配分等ご留意ください)

投稿日時 - 2007-09-12 08:02:46

お礼

deus_ex_machinaさまご回答ありがとうございます。
お返事遅くなり申し訳ありません。
言われたとおりにしてみたら解決しました!
本当にありがとうございます。
数式まで作って頂いて感激です。
本当に助かりました、ありがとうございました^^

※この場を借りて投稿していただいた皆様に感謝致します。
本当にありがとうございました。

投稿日時 - 2007-09-13 08:07:18

ANo.1

具体的な説明ではなく申し訳ないのですが、オートフィルでやるのであれば、
ヘルプで「オートフィル」と入力し検索→「ワークシートのセルにデータを自動的に入力する」をクリック→「ユーザー設定の連続データを使用してデータを入力する」をクリック

ここで表示される内容を参考に頑張ってみてください。
オートフィルの連続データの規則性を登録できる機能です。

投稿日時 - 2007-09-11 13:52:04

お礼

saborimaさま早速のご回答ありがとうございます。
誠に残念ながら、ユーザー設定リストは既に行ってみたのですが、
うまくいきませんでした^^;どうしてでしょう?

しかしながら、EXCEL2007自身のヘルプ機能は利用したことがなく、
2007では大変わかりやすくなっているんだと認識でき、
参考になりました。ありがとうございました。

投稿日時 - 2007-09-11 15:34:10

あなたにオススメの質問