- ベストアンサー
エクセル関数についての質問です。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
1列に表示するなら以下のような関数になります(添付画像参照) A2に開始値、B2に終了値、C2に間隔が入力してある場合E1セル(どのセルでも同じ数式)に以下の式を入力し下方向にオートフィルします。 =IF((((RIGHT($B$2,LEN($B$2)-1)-RIGHT($A$2,LEN($A$2)-1))/$C$2)+1)*((CODE(LEFT($B$2,1))-CODE(LEFT($A$2,1)))+1)<ROW(A1),"",CHAR(CODE(LEFT($A$2,1))+INT((ROW(A1)-1)/(((RIGHT($B$2,LEN($B$2)-1)-RIGHT($A$2,LEN($A$2)-1))/$C$2)+1)))&RIGHT($A$2,LEN($A$2)-1)+$C$2*MOD(ROW(A1)-1,(((RIGHT($B$2,LEN($B$2)-1)-RIGHT($A$2,LEN($A$2)-1))/$C$2)+1)))
その他の回答 (10)
- layy
- ベストアンサー率23% (292/1222)
モーグというサイトのEXCELVBA即効テクニックで 範囲指定したエリア内複数セルにAからZの文字を埋めるようなサンプルありますから一度参考に。 文字編集を10アップさせたら近い結果にならないかなあと思います。
お礼
ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
No.3・4です! 他の方へのお礼欄を読ませてもらいましたが まだご希望の方法がはっきりと掴めていないのが現状です。 前回はあらかじめ元データがある場合の方法で、列が増えるのであれば別Sheetに作業用の表を作り データ分だけ列方向・行方向にオートフィルでコピーしても同様の結果が得られると思います。 今回は元データもある規則によって作成し、それを縦1列に表示したいのかな? と思い投稿します。 今回も画像をアップしてみます。 Sheet1のC列に最小値・最大値・増加量を入力します。 そして、データの1行目(画像では「A」~「C]です)は手入力としてみました。 Sheet1のF2セルに =IF(F$1="","",IF((ROW(A1)-1)*$C$3+$C$1>$C$2,"",F$1&(ROW(A1)-1)*$C$3+$C$1)) として列方向と行方向にオートフィルでコピーすると Sheet1のデータができます。 そして、Sheet2に作業用の表を作ります。 今回は元データが26列・100行まで対応できる数式にしてみました。 Sheet2のA1セルに =IF(Sheet1!F2="","",COLUMN(A1)*100+ROW(A1)) という数式をいれ、26列100行オートフィルでコピーします。 最後にSheet1のA2セルに =IF(COUNT(Sheet2!$A$1:$Z$100)<ROW(A1),"",INDEX($F$2:$AE$100,MOD(SMALL(Sheet2!$A$1:$Z$100,ROW(A1)),100),INT(SMALL(Sheet2!$A$1:$Z$100,ROW(A1))/100))) という数式をいれ、オートフィルで下へコピーすると 画像のような感じになります。 以上、長々と書きましたが 今回も的外れならごめんなさいね。m(__)m
お礼
ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しの表のようにデータを並べるとしたら初めに必要なデータを用意しておくことが必要でよう。 例えばD1セルから下方に、M,L,LLというように行を変えて入力します。また、繰り返す数値についてもE1セルから下方に67,70、73,80といったように行を変えて入力します。 そこでお求めのデータの表示ですがA2セルから下方に表示させるとしてA2セルには次の式を入力して下方にオートフィルドラッグしあす。 =IF(ROW(A1)>COUNTA(D:D)*COUNT(E:E),"",INDEX(D:D,ROUNDUP(ROW(A1)/COUNT(E:E),0))&INDEX(E:E,MOD(ROW(A1)-1,COUNT(E:E))+1))
- MackyNo1
- ベストアンサー率53% (1521/2850)
>規則性は、A→B→Cというアルファベット順。 >数字は、10キザミを出していますが、一定の規則にしたがって増える。 この前提で前の回答は複雑な数式を提示しましたが、もし、先頭の文字は後から添付されたように規則性のないアルファベットなら以下のような設定で表示できます。 A2セルに最小数字、B2セルに最大数字、C2セルに間隔を入力し、D2セルから下に先頭に付けたい文字を手入力しておき、G2セルに以下の式を入力して下方向にオートフィルします。 =IF((($B$2-$A$2)/$C$2+1)*COUNTA($D$2:$D$10)<ROW(A1),"",OFFSET($D$2,INT(((ROW(A1)-1)/(($B$2-$A$2)/$C$2+1))),0)&$A$2+$C$2*MOD(ROW(A1)-1,($B$2-$A$2)/$C$2+1))
お礼
ありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>B30、F50と二つを範囲指定すると >10ずつ増えるとして、B30 B40 B50 C30・・・・F30 F40 F50という >15のデータが抽出(もしくは、リストアップ)したいということなのですが・・・。 上記の場合、具体的にどのようなリストを作成したいのでしょうか? 縦1列にB30 B40 B50 C30・・・・F30 F40 F50というデータを表示したいのか、それとも縦横の表を作成したいのかわかりません。 このようなケースでは、かなり複雑な数式を駆使する必要がありますので、「たとえば」のデータではなく、実際に使用しているデータで、レイアウトなどもできる限り具体的に例示されたほうが、皆さんから的確な回答が得られると思います。
お礼
すみません。画像の貼り付け方がわからず、 とりあえず、再度質問欄に貼り付けてみました。 縦にデータを表示したいのです。 婦人服の商品別に色やサイズを入力していかなければならないのですが、 個別の商品によってサイズの有無が変わり 大変困っています。 よろしくお願いします。
- layy
- ベストアンサー率23% (292/1222)
参考回答です。 基準セルは決めてなくて、例えば、C3からF5を範囲選択し右クリックかしたらA10からD30を埋める、B5からでも、任意のセルから、こんなことを考えているのでしょうか。 でしたら、セル範囲選択し何かする、という仕掛けを探してみたらと思います。ヒントがあるかもしれません。 関数埋めるのはそのセルにセットしたいと決まっているとき、と思います。
- tom04
- ベストアンサー率49% (2537/5117)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 外していたらごめんなさい。 関数での方法をご希望のようなので・・・ 無理やりやってみました。 ↓の画像で説明します。 元データが3列・100行目まで対応できるようにしてみました。 B2セルに最初のデータ・C2セルに最後のデータを入力するとその間のデータを表示させる方法です。 B3・C3は作業用のセルになります。 B3セルに =IF(B2="","",SUMPRODUCT(($E$2:$G$100=B2)*COLUMN($A$1:$C$1))*100+SUMPRODUCT(($E$2:$G$100=B2)*ROW($A$1:$A$99))) という数式をいれ、隣のC3セルまでオートフィルでコピーします。 そして、作業用の表を設けています。 I2セルに =IF(OR(E2="",COUNTBLANK($B$3:$C$3)),"",IF(AND(COLUMN(A1)*100+ROW(A1)>=$B$3,COLUMN(A1)*100+ROW(A1)<=$C$3),COLUMN(A1)*100+ROW(A1),"")) という数式をいれ、列方向と行方向にオートフィルでずぃ~~~!っとコピーします。 最後に結果のA2セルに =IF(COUNT($I$2:$K$93)<ROW(A1),"",INDEX($E$2:$G$93,MOD(SMALL($I$2:$K$93,ROW(A1)),100),INT(SMALL($I$2:$K$93,ROW(A1))/100))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 以上、参考になればよいのですが、 的外れなら読み流してくださいね。m(__)m
お礼
こんな私の質問に丁寧に答えていただいてありがとうございます。 すごく近い感じがするのですが、 作業中によくわからない点があり、 立ち往生しています^^; まず、元データの作表は 手入力で入れるということでしょうか。 それとI2の関数は、 オートフィルでいくということですが、 現在の作業列という欄は もっと広がっていくイメージで よいでしょうか。 すみません、いろいろと せっかくなので、再度ご質問しました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA1セルに次の式を入力して下方にオートフィルドラッグします。 ="A"&ROW(A1)*10&"B"&ROW(A1)*10&"C"&ROW(A1)*10 連続したデータが表示されます。
お礼
ありがとうございます。 任意のセルにオートフィルドラッグができる点は イメージどおりでした。 ただ、A10から始まると限っていないのです。 たとえば、ある抽出では B50、B60、B70、C50、C60、C70という感じで 循環しながら、10ずつ進む値になったりするので・・・。 でも回答ありがとうございました。
- layy
- ベストアンサー率23% (292/1222)
関数でなくても VBAでプログラムを作れば、リストにするのは可能です。 >上記の表がありまして、最初と最後の引数を入力したら >先頭のA10と最後のC40を入力して、10ずつ数字があがっていくものだとすると >A10 A20 A30 A40 B10 B20 B30 B40 C10 C20 C30 C40と >一覧ができあがるというように。 入力でなくて左上のセルと右下のセルを指定するという意図でしょうか。 表があってもなくても上記一覧結果は出せるため、 A1セルに"A10"、B1セルに"B10"、C1セルに"C10" なのか A1セルに"A10B10C10" なのか、 セルとの絡みも教えてください。
補足
どうもすみません。わかりづらくてm(_ _)m イメージとしては、A1セルにA10、B1セルにB10、C1セルにC10です。 (セル自体は、任意ですが、独立して一つのセルに一つの記号があります) 規則性は、A→B→Cというアルファベット順。 数字は、10キザミを出していますが、一定の規則にしたがって増える。 > 入力でなくて左上のセルと右下のセルを指定するという意図でしょうか。 これに関しては、その出力データに対しての 最小値と最大値で、範囲を指定するというイメージです。 たとえば、常に一定のセルと決まっておらず、 あるときは、B30、F50と二つを範囲指定すると 10ずつ増えるとして、B30 B40 B50 C30・・・・F30 F40 F50という 15のデータが抽出(もしくは、リストアップ)したいということなのですが・・・。 数学でいう「行列」なのでしょうか。 まだ、お伝えできてない点があると思います。 大変ありがたいので、また必要事項ありましたら、 お書きいただければ、助かります。
お礼
この回答がシンプルで、 求めていたものです。 ありがとうございました。