• ベストアンサー

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

お世話になります。困っています。 連続データもしくは簡単であれば関数を使用して次のことをしたいです。 0-9までの数字とA-Zまでを使用した4列を作りたいのです。 単純にオートフィルを行うと、どうしても英数字での羅列が おかしくなってしまい、一度にオートフィルすることができません。 どのようにしたら連続データを一度に作成することができるでしょうか? 困っているので皆様の知恵を拝借させてください>< ↓こんな感じに作りたいです。単純に100万通り以上ある(?)ので、 シートを2枚に渡って作成しようかと思っています。 0000から 0001 ∫ 0009 000A 000B ∫ 000X 0010 ∫ ZZZZまで

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

数値とアルファベットで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進数値(文字形式)に変換します。

yoroshikumail
質問者

お礼

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

yoroshikumail
質問者

補足

mshr1962さま大変申し訳ございません。 数時間格闘していましたが解決しませんでした。。。 教えていただいたとおりに「Function CHG36(NUM)~End Function」 までペーストしてVisualBasicEditorで標準モジュールを 作成したのですが、セルに=CHG36(ROW()-1)とすると、 #REF!となってしまいました><。 私の手順が間違っているのかと存じますが、原因がわかりません。 ペーストまでしたら、「終了してMicrosoft Excelに戻る」 だけでよろしいのでしょうか? ヘルプを参考にする限り、インポートやエクスポートは 必要ないように思って手はつけていないのですが。。。 お手すきの時にでもお返事頂ければ幸いです。 出来の悪い質問者で申し訳ありません><

その他の回答 (2)

noname#52504
noname#52504
回答No.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で動作確認済 (この回答には新規情報はほとんどないので、ポイント配分等ご留意ください)

yoroshikumail
質問者

お礼

deus_ex_machinaさまご回答ありがとうございます。 お返事遅くなり申し訳ありません。 言われたとおりにしてみたら解決しました! 本当にありがとうございます。 数式まで作って頂いて感激です。 本当に助かりました、ありがとうございました^^ ※この場を借りて投稿していただいた皆様に感謝致します。 本当にありがとうございました。

noname#42041
noname#42041
回答No.1

具体的な説明ではなく申し訳ないのですが、オートフィルでやるのであれば、 ヘルプで「オートフィル」と入力し検索→「ワークシートのセルにデータを自動的に入力する」をクリック→「ユーザー設定の連続データを使用してデータを入力する」をクリック ここで表示される内容を参考に頑張ってみてください。 オートフィルの連続データの規則性を登録できる機能です。

yoroshikumail
質問者

お礼

saborimaさま早速のご回答ありがとうございます。 誠に残念ながら、ユーザー設定リストは既に行ってみたのですが、 うまくいきませんでした^^;どうしてでしょう? しかしながら、EXCEL2007自身のヘルプ機能は利用したことがなく、 2007では大変わかりやすくなっているんだと認識でき、 参考になりました。ありがとうございました。

関連するQ&A