- ベストアンサー
数値ではない連続データを関数で(excel)
excelにて、あらかじめ関数をいれておいて最初のセルに 入力すると、連続データになるようにしたいのです。 数値なら二行目に =A1+1 とでもいれておけばいいのですが、今回入れたいものは MM0001のような文字列?です。 フィルハンドルでの手動の操作ではできるので なにか関数があるのではないかと思ったのですが・・・。 検索しても、ヘルプみても見つけることが できませんでした。どなたかアドバイスお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
文字列の数や桁数など全て可変にするなら =IF(TYPE(-RIGHT(A$1))=1,LEFT(A$1,LEN(A$1)-LOOKUP(10^16, RIGHT(A$1,COLUMN($A:$O))*1,COLUMN($A:$O)))&TEXT(LOOKUP( 10^16,RIGHT(A$1,COLUMN($A:$O))*1)+ROW(A1),REPT(0,LOOKUP( 10^16,RIGHT(A$1,COLUMN($A:$O))*1,COLUMN($A:$O)))),"") ここまでしないとダメだと思います。
その他の回答 (9)
- imogasi
- ベストアンサー率27% (4737/17069)
>パソコン素人が使用する目的で作っているので 最初のセルに入力する(MM0001)と自動でダ~っと でる形にしたいのです。 関数でやるほうが。素人には余計わかりにくいのではないですか。 既に出ている関数回答を素人はすぐ説明なしで理解できますか。 関数偏重をエクセル関数病と私はなずけています。 MM0001のセルで+ハンドルを出して、下へ引っ張れば MM0001 MM0002 MM0003 ・・になるのはご存知でしょうが、 こういうのが素人の為でないという発想が不思議。 関数は自作する人の考えることです。使う人は関数のことは考えず 結果だけ見ればよい。 関数で、作った人以外の素人が便利なのは、入力したとき初めて連番 が現れる仕組みでしょうか。 =IF(A1="","",・・・のように。 あらかじめセルに連番を表示をしてしまって良いのなら、関数に拘る理由はないと思う。 質問の意図や表現が不明。 MN0001A の0001部を1ずつ増やしたという質問なら、質問に値すると納得するが。
補足
う~ん、何を言いたいのでしょうか? あなたの常識を押し出し、関数にこだわることを病的に扱い、その上アドバイスしていただけるわけでもなく・・・。黙ってスルーしてくたださればいいものを。 この短い文章の中で私のやりたいことを十分に理解してもらえることが難しいとは思いますが。 今回話しに出した素人とは、パソコン覚えたての人ではなくパソコン恐怖症的な全く体が受け付けないに等しい40代のおばさんのことなんです。工場のラインで使うものですから。こういう人に対してPCを使用してもらうときはこのカーソルが十字になったとき・・・なんていっても難しいのです。仮にそれでわかりましたといわれたところでその後が不安でしょうがないのです。実際分かってないことが多いですから。そうなると、入力や操作を最小限に抑え、入力する部分を色分けし、最初のシリアルと測定した生データだけを入れられるものを作る必要があり、関数をいれたところをロックするまでやるのがベストだと私の経験上の判断なのです。そりゃアクセスで入力フォームつくれば問題なくできることはわかってますが、そうもいかないのです。自分の常識から外れた書き込みがあったときに不思議だとか不明と思う感覚は理解しますが、それを受け入れた上で一緒に考えてくれる、それが心の余裕ではないのでしょうか?一応補足として書かさせて頂きました。
- merlionXX
- ベストアンサー率48% (1930/4007)
No4です。 > この関数はどういった意味なんでしょうか? =IF(A1="","",LEFT(A1,2)&TEXT(ROW(A2),"0000")) A1が空白なら空白にしなさい。 そうでないならA1の文字列の左から2つとA2のある行番号を0000の形式でくっつけなさい。 って意味ですよ。
- redowl
- ベストアンサー率43% (2140/4926)
=LEFT(A$1,FIND("0",A$1)-1)&TEXT(ROW()-1+VALUE(RIGHT(A$1,LEN(A$1)-FIND("0",A$1)+1)),REPT("0",LEN(A$1)-FIND("0",A$1)+1)) 解説 LEFT(A$1,FIND("0",A$1)-1) 部分は セルA1に入力した文字列で 先頭部分のアルファベットまでを表示 アルファベット以外の文字でも良し。 文字列で 何番目にゼロが出現するかを FIND関数で見つけ ゼロの前までの文字列を REFT関数で表示 &TEXT(ROW()-1+VALUE(RIGHT(A$1,LEN(A$1)-FIND("0",A$1)+1)),REPT("0",LEN(A$1)-FIND("0",A$1)+1)) VALUE関数で セルA1のアルファベット以降の文字列を数値に変換し row()関数-1で加算 TEXT関数で 加算する数値を セルA1の 数字列の個数を REPT関数で対応 長い数式ですが セルA1に 入力した文字列 がどんな表記でも対応
- kenken0
- ベストアンサー率24% (46/190)
1です。アルファベットが固定であることが原則ですが、表示形式を先ほどのようにしておいて、セルには=A1+1のように書いておきます。そうすれば出ますが・・だめでしょうか?
- hidechan2004
- ベストアンサー率23% (464/1992)
No.2の方の回答でいけますよ。 オートフィルではなく、質問文にある式(=A1+1)で大丈夫です。 オートフィルは、この式をオートフィルすればいいんです。 ただし、表示形式なので表示上だけしか変わりませんので、Excelは4桁の数字と認識しています。 入力自体もMMは入れる必要がなく、4桁の数字を入力するだけで表示されますよ。
- merlionXX
- ベストアンサー率48% (1930/4007)
> 最初のセルに入力する(MM0001)と自動でダ~っと > でる形にしたいのです。 では、最初のセルがA1の場合、A2以降に =IF(A1="","",LEFT(A1,2)&TEXT(ROW(A2),"0000")) といれときます。 A1にMM0001でもCC0001でも入れてみてください。
補足
みなさん、いろいろと回答ありがとうございます。 この方の回答が一番目的にあってました。 そこで教えていただきたいのですが この関数はどういった意味なんでしょうか? ヘルプでtextやrowを調べたのですがいまいち・・・。 leftまでは分かるのですが。
- merlionXX
- ベストアンサー率48% (1930/4007)
="MM"&TEXT(ROW(A1),"0000") でいかがでしょう?
- kenken0
- ベストアンサー率24% (46/190)
セルの書式設定でユーザー定義を選び、"MM"0000と入力してください。次に、数値データのみをセルに入力します。 後はそのままオートフィル(だったっけ?)で連続データを選んで完成♪
補足
何度もすみません。やはり説明が悪かったようで・・・。 オートフィルのやり方は理解してます。 パソコン素人が使用する目的で作っているので 最初のセルに入力する(MM0001)と自動でダ~っと でる形にしたいのです。
- kenken0
- ベストアンサー率24% (46/190)
連続データとのことですが、MM0001の次はMM0002でいいんですか??頭のアルファベットは変わらなくていいならできますが・・。MM0001→MN0002→Mo0002・・・みたいになるんでしょうか?
補足
説明不足でした。 MM0001,MM0002,MM0003という感じにしたいのです。
お礼
みなさん、アドバイスありがとうございます。 結論からいうとこの方の回答が、ベストでした。 私の説明が悪かったのかもしれませんが、 A1を参照してA2以降でズラ~っと並べる分には いけたのですが、A5以降に並べるなどをすると ずれてしまいます。これは列を返すという関数を 使ってるからなのでしょうか?この条件を説明していれば 対応できたのかもしれませんね・・・反省です。 いずれにしてもこの方の入力ではそれが回避されてました。複雑すぎて何をしてるかわからないので 結果、自分のものにはなりませんでしたが・・・。 ありがとうございました。