• ベストアンサー

エクセルの関数で?

Excel2000で表を作っています。 内容は、複数の文字データを色々に組み合わせて、一つのデータを作るものです。 たとえば、項目1が「おひつじ座、おうし座、ふたご座・・・」、項目2が「東京都、千葉県、神奈川県・・・」など、項目3が「10代、20代、30代・・・」、項目4が「男性、女性」で、それらを組み合わせて、『しし座・茨城県・40代・女性』といった一つのデータにして、それを一覧表にしたいのです。 すべての項目をもれなく組み合わせなくてはなりません。 実際のデータはもっと項目がたくさんあって、今は手作業でコピー&ペーストしています。 エクセルの関数?などでもっと効率よく出来るのでしょうが、いろいろ検索しましたが、どう検索したらよいかもわかりません・・・ なにか良い方法があれば、ぜひ教えてください。 宜しくお願い致します。

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

  • ベストアンサー
  • Musaffah
  • ベストアンサー率36% (37/101)
回答No.6

vs-one様 取り急ぎマクロで作ってみました。こんなんでどうでしょうか?(あまりきれいじゃないかも・・・) これを標準モジュールにコピー&ペーストしてください。 セルA1から複数の文字データを入力して、[組合せ抽出開始]マクロを実行すると、7列目に全組み合わせを並べてくれます。 Private arPosData() As Integer Private arPosRead() As Integer Public Sub 組合せ抽出開始() Dim i As Integer Dim iP As Integer Dim iWrtRow, iWrtCol As Integer Dim strDmy As String 'データ終端列取得 Call getLastCol '各列のデータ終端行取得&読み込み位置配列初期化 For i = LBound(arPosData) To UBound(arPosData) arPosData(i) = getLastRow(i) arPosRead(i) = 1 Next i '書き込み開始位置指定(好きな位置に設定) iWrtRow = 1 iWrtCol = 7 '組み合わせ情報書き込み Do strDmy = "" For i = LBound(arPosRead) To UBound(arPosRead) strDmy = strDmy & Cells(arPosRead(i), i) If i <> UBound(arPosRead) Then strDmy = strDmy & "・" End If Next i If Len(Trim(strDmy)) <> 0 Then Cells(iWrtRow, iWrtCol) = strDmy Else Cells(iWrtRow, iWrtCol).ClearContents End If iWrtRow = iWrtRow + 1 Loop While isDataEnd(i - 1) = False End Sub 'データ終端列番号取得 Private Sub getLastCol() Dim i As Integer i = 1 Do While Len(Trim(Cells(1, i))) <> 0 i = i + 1 Loop ReDim arPosData(1 To i - 1) As Integer ReDim arPosRead(1 To i - 1) As Integer End Sub '指定列のデータ終端行番号取得 Private Function getLastRow(ByVal iCol As Integer) As Integer Dim i As Integer i = 1 Do While Len(Trim(Cells(i, iCol))) <> 0 i = i + 1 Loop getLastRow = i End Function 'データ読み取り行終端チェック Private Function isDataEnd(ByVal i As Integer) As Boolean isDataEnd = False arPosRead(i) = arPosRead(i) + 1 If arPosRead(i) = arPosData(i) Then arPosRead(i) = 1 If i = 1 Then isDataEnd = True Else If isDataEnd(i - 1) = True Then isDataEnd = True End If End If End If End Function

vs-one
質問者

お礼

ご回答ありがとうございます。お礼が遅くなってごめんなさい。 早速試してみたところ、望んでいたとおりにリストが出来上がりました。ありがとうございました!!! 取り急ぎでマクロって・・・いいなぁすごいなぁ・・・これから少しずつ勉強しようっと。

その他の回答 (5)

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.5

=OFFSET($A$1,MOD(INT(ROW(A1)/30),8),0) & OFFSET($B$1,MOD(INT(ROW(A1)/6),5),0) & OFFSET($C$1,MOD(INT(ROW(A1)/2),3),0) & OFFSET($D$1,MOD(ROW(A1),2),0) で求められます。 上式は、見やすいように改行を入れています。実際は改行は不要です。 一番上の行がA列、二行目がB列、三行目がC列、四行目がD列のデータを取得する部分です。 今は試しにA列に8データ、B列に5データ、C列に3データ、D列に2データを入れてみました。 1行目の「30」は、実際は(B列の組合せ)×(C列の組合せ)×(D列の組合せ)を入れてください。 1行目の「8」は、実際はA列の組合せを入れてください。 2行目の「6」は、実際は(C列の組合せ)×(D列の組合せ)を入れてください。 2行目の「5」は、実際はB列の組合せを入れてください。 3行目の「2」は、実際はD列の組合せを入れてください。 3行目の「3」は、実際はC列の組合せを入れてください。 4行目の「2」は、実際はD列の組合せを入れてください。 詳しい説明は省略しますが、桁ごとに繰りあがりが異なる変則的なn進数を解析しています。

vs-one
質問者

お礼

ご回答ありがとうございます。御礼が遅くなってごめんなさい。 早速実際のデータで試してみたところ、なかなかいい感じです!!!ただ、項目数が実際はもっとあるので、教えていただいた数式を自分なりに飲み込んでから工夫したいと思います。 ほんとうにありがとうございました。

回答No.4

あ、だめだ。さっきの方法は各項目の種類数が互いに素の場合しか使 えないんでした。2種類*2種類の場合を考えれば一目瞭然。m(__)m 一般人&自信なし落ち~残念!

vs-one
質問者

お礼

ご回答ありがとうございます。お礼が遅くなってごめんなさい。 ↓早速ためしてみようとしたところ、だめだったんですね・・・残念! 本当に素人なもので、色々考えていただいて、とても助かります。ありがとうございます。

回答No.3

12種類と47種類と6種類ぐらいと2種類の組み合わせを1行目から全部 出すような場合、mod間数とrow関数をベースに作っていきます。 たとえば、=mod(row(),12)+1を下にドラッグしてみると、1から12ま での数値の繰り返しが出来ます。A列からD列まで、それぞれmod関数 の第2パラメータを12、47、6、2と変えて12*47*6*2行ドラッグすれ ば、それぞれの項目の何番目を使うのかの表が完成です。A1からだ と、2222から始まって1111で終わります。これを、 =indirect("Sheet2!A"&A1)&"・"&indirect("Sheet2!B"&B1)&"・"& indirect("Sheet2!C"&C1)&"・"&indirect("Sheet2!D"&D1) (Sheet2は、項目一覧のあるシート名) のようにしてやると、ほんの数分で漏れのない組み合わせの出来上が り。どこかに「形式を選択してペースト」→「値」して使いましょう。

回答No.2

↓なるほどですね。 VBA&マクロに詳しい方が後できっとご教授くださるでしょう。 私は、VBA&マクロを使わずに済むような仕事しかしていませんので、VBA&マクロはわかりません。 今はおっしゃるように、相対・絶対の組合せしか思いつきません。1行目だけ、入力すれば済む作業だとは思うので、いいマクロを教えて下さる方がいらっしゃるまでとりあえず・・・ ご承知のこととは存じますが、式を入力している際、A1、B1等でカーソルを点滅させ、F4キーを押せば、絶対と相対が入れ替わるので、とりあえずそれで作業を・・・。

vs-one
質問者

お礼

ありがとうございます(涙) とりあえず地道~に、娘の邪魔をかわしながらやっていきます。 きっと、なにか方法、あるんでしょうね~・・・

回答No.1

1.A1 = おひつじ座、B1 = 東京都、C1 = 10代、D1 = 男性 だとする。 2.組み合わせたいセルに、 =A1&"・"&B1&"・"&C1&"・"&D1 と入力すれば、終わりです。A1・B1等は、目的のセルをクリックすれば、自動で入力されます。 後は、入力したセルを下にドラッグすれば、全データ出来上がり。 一番手っ取り早いのでは?

vs-one
質問者

お礼

早々のご回答、ありがとうございます! 早速試してみたのですが、うまくいきませんでした・・・ A列に星座、B列に都道府県、のように並んで、たてにずらずらと項目毎データがならんでいて、教えていただいた数式で試したところ、2行目は「=A2&"・"&B2&"・"&C2&"・"&D2」となってしまいました。 求めている、「A1&B2&C1&D1」「A1&B2&C1&D1」とどんどん変化していくようにするには、絶対と相対を組み合わせて、やっぱり一つずつ数式を入力するしかないのでしょうか・・・ 説明が不足していて、すみません。 でもすぐにご回答いただけて、涙が出るほどうれしいです。

関連するQ&A

  • ホロスコープについて。女性です。

    ホロスコープについて。女性です。 自分の性格を少しでも理解したいので、ホロスコープに詳しい方宜しくお願いします。 補足で、全体的に射手座が多い場合は、射手座気質が強いんでしょうか? 飽きっぽい性格は自覚してます。 太陽 てんびん座        月 ふたご座 水星 おとめ座 金星 しし座 火星 しし座 木星 いて座 土星 さそり座 天王星 いて座 海王星 いて座 冥王星 てんびん座 第1室(ASC) うお座 第2室 おひつじ座 第3室 おうし座 第4室(IC) ふたご座 第5室 かに座 第6室 しし座 第7室(DSC) おとめ座 第8室 てんびん座 第9室 さそり座 第10室(MC) いて座 第11室 やぎ座 第12室 みずがめ座

  • エクセルである項目をキーに別ファイルを作成したい

    エクセルである項目をキーに別ファイル(別シートでも可)を作成したいのですが、簡単にできる方法はありますか? 例えば 長野県 ああああ 栃木県 いいいい 長野県 しししし 宮城県 うううう というデータがある場合、長野県、栃木県、宮城県というファイルにそれぞれ長野のデータ、栃木のデータ、宮城のデータで分けたいのです。今、私が知っている方法はオートフィルタで長野とかの項目を選択し、コピーアンドペースト をそれぞれで繰り返すことだけなので、もれもあるし大変だしということでもうちょっと効率的な方法があったら教えてください。

  • ホロスコープの鑑定をお願いしたいです

    最近ホロスコープに興味を持ち、作成サイトで作ってはみたものの・・・ 鑑定に四苦八苦しています。 どなたか詳しい方に鑑定していただけると嬉しいです。 ↓私のホロスコープです↓ 1977年3月16日 10:51 岡山県玉野市生まれ  太陽  魚座 月  水瓶座 水星  魚座 金星  牡羊座 火星  水瓶座 木星  牡牛座 土星  獅子座 天王星  蠍座 海王星  射手座 冥王星  天秤座 ASC  双子座 IC  乙女座 DSC  射手座 MC  魚座 龍頭  天秤座 龍尾  牡羊座 リリス  牡牛座 1室  双子座 2室  蟹座 3室  獅子座 4室  乙女座 5室  天秤座 6室  蠍座 7室  射手座 8室  山羊座 9室  水瓶座 10室  魚座 11室  牡羊座 12室  牡牛座 よろしくお願いします。

  • エクセルの重複データを削除したい

    エクセルの重複データを削除したいです。重複項目を一つにまとめるのではなく、重複があれば、その項目を全て削除したいです。 シート処理前 ------------ 東京都 神奈川県 千葉県 埼玉県 群馬県 東京都 神奈川県 ------------ これを重複処理します。東京都と神奈川県が重複しているので削除します。 シート処理後 ------------ 千葉県 埼玉県 群馬県 ------------ このような処理をどうしても行いたいです。 実際のデータは1万件以上あり、手動では不可能でした。 どうかお知恵をお貸し頂けませんでしょうか?

  • ホロスコープについて

    以下のホロスコープについて、性格などを少しでも知りたいです。 性別は女性です。 専門家の方など、もし解読できる方がいらっしゃれば教えてください。 太陽:やぎ座             第1室:しし座 月 :やぎ座             第2室:おとめ座 水星:やぎ座             第3室:てんびん座   金星:いて座             第4室:さそり座      火星:てんびん座           第5室:いて座 木星:いて座             第6室:やぎ座 土星:さそり座            第7室:みずがめ座 天王星:いて座            第8室:うお座 海王星:いて座            第9室:おひつじ座 冥王星:さそり座           第10室:おうし座                    第11室:ふたご座                    第12室:かに座

  • エクセルのオートフィルタで

    データが ---- 都道府県名 ←オートフィルタの先頭 東京都 神奈川県 神奈川県 東京都 神奈川県 埼玉県 ---- エクセルのオートフィルタで都道府県名を並べ替えで昇順とやると、 ---- 都道府県名 神奈川県 東京都 埼玉県 神奈川県 神奈川県 東京都 ---- となり、きちんと並べ替えがされません…なぜでしょうか? オートフィルタをかけたまま保存し、たまに開いてデータを追加していっています。追加されたデータがきちんと並び変わっていないようなきがするのですが、オートフィルタをかけなおしてもやっぱり並び替えしてくれません… 例えば神奈川県だけをオプションで選択したらきちんと3県選択してくれ、そのうちのひとつの神奈川県をセルで選んで、他の2つにセルごとコピーします。その後、上記の並べ替えをするときれいに並び変わります。 値は同じなのにきれいに並べ替えできないのはなぜでしょうか? 説明がうまくできてないかもしれませんが、宜しくお願いします。

  • 関数に関しての質問です

    関数に関しての質問です 現在F列26とG列26のセルを合体させたF26という統合セルがあります。 =SUMPRODUCT((Sheet!$I$1:$I$5000={"茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県"})*ISNUMBER(FIND($AH3,Sheet!$M$1:$M$5000))) 上記のセルを横に引き伸ばした際に、 =SUMPRODUCT((Sheet!$I$1:$I$5000={"茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県"})*ISNUMBER(FIND($AH4,Sheet!$M$1:$M$5000))) 上記のような形で伸びていってほしいのですが、どうすればいいでしょうか。 尚、横に伸ばす先のセルも2つに統合されたものです。

  • 関数がわかりません。

    エクセルにデーター入力してるのですが、地域別に集計したいのですが、 関数は何を使えばいいですか?教えて下さい。(「東京都」が入っているものが何件とか、「神奈川県」が何件とかです。)

  • 茨城県は人口が少なすぎると思う。

    東京都周辺の人口を見る限り、茨城県の人口ってなんで低いんですかね? 東京都と接している神奈川県、埼玉県、千葉県は人口が多いですが茨城県は少なすぎる気がします。 茨城県内はJR通ってますから、都心へのアクセスも出来るのに なんでなんだろうと不思議に思います。 それと、千葉県も埼玉県や神奈川県に比べると若干人口が少ないですが 東京都の東側はなぜ人口が少ない傾向なんでしょうか?

  • エクセルで文字列の乱数を作るには?

    例えば、 東京都、千葉県、神奈川県、栃木県、埼玉県、群馬県、茨城県の 7個の文字列があったとしまして、 エクセルでこの7個の文字列のうち5つをランダムで選んで結合し、ひとつの文にする方法はありますでしょうか? できれば、各々の間に『の』『と』『や』『が』『に』等の格助詞を入れて文にしたいと思っております。日本語としての意味は分からなくてもかまいません。 このようなひとつの文を各々の文字列が重複しないように順列で大量に作りたいと思っております。 例 1、千葉県の神奈川県に埼玉県の茨城県と群馬県 2、神奈川県と埼玉県の群馬県が千葉県や東京都 ・・・ セルで重複しないようにランダムに表示できれば、ひとつの文にするのはエディタ等でできますので、セルに表示させる段階まででもかまいません。 どうかよろしくお願いします。

専門家に質問してみよう