
No.4ベストアンサー
- 回答日時:
シート1に元の表があるとしてシート2にお求めの表を作るとします。
内容が複雑ですのでシート1では多くの作業列を作って対応することにします。
シート1のD2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(C2="","",CODE(C2))
E2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(D2="","",MATCH(D2,I:I,1))
F2セルには次の式を入力して下方にオートフィルドラッグします。
=(E2-1)*3+2+COUNT(E$2:E2)
なお、データベースになるものですがH1セルから下方には、ア、カ、サ、タ、ナ、ハ、マ、ヤ、ラ、ワとH10セルまで入力します。
I1セルには次の式を入力して下方にオートフィルドラッグします。
=IF(H1<>"",CODE(H1),IF(ROW(A1)=11,9700,""))
J1セルには次の式を入力して下方にオートフィルドラッグします。
=IF(H1="","",(ROW(A1)-1)*3+COUNTIF(D:D,"<"&I1)+1)
その後にシート2ではA1セルに次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(AND(COUNTIF(Sheet1!$J:$J,ROW(A1))>0,COLUMN(A1)=1),INDEX(Sheet1!$H:$H,MATCH(ROW(A1),Sheet1!$J:$J,0))&"行",IF(COUNTIF(Sheet1!$J:$J,ROW(A1)-1)>0,IF(COLUMN(A1)=1,"名前",IF(COLUMN(A1)=2,"フリガナ",IF(COLUMN(A1)=3,"会員番号",""))),IF(COUNTIF(Sheet1!$F:$F,ROW(A1))>0,IF(COLUMN(A1)=1,INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!$F:$F,0)),IF(COLUMN(A1)=2,INDEX(Sheet1!$C:$C,MATCH(ROW(A1),Sheet1!$F:$F,0)),IF(COLUMN(A1)=3,INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$F:$F,0)),""))),"")))
これでお望みの表がシート2に表示されます。
分かりやすい説明と設定しやすい関数を教えていただきありがとうございました。
やはり下準備(作業列)の設置が必要とよくわかりました。
これから関数もVBAも出来るように勉強いたします。
勉強になり、ありがとうございました。
No.6
- 回答日時:
関数の達人の常連の皆様には感服するばかりですが、このレベルになると、VBAを会得する方が簡単で、メンテナンス性も良いと思います。
と、言いながら、関数でやってみました。分類だけで、並べ替えはできておりません。エクセルの機能でフリガナ列をキーに並べ替えしておいて下さい。(^^;)$だらけの式は、自分の目が拒絶反応を示しますので、名前をつけてやっています。動的な名前(参考URLをご覧下さい)にすると良いと思います。
A2:C?に、tableという名前を付けておきます。
F2に、{=INDEX(table,SMALL(IF((CODE(ASC(INDEX(table,,3)))>=177)*(CODE(ASC(INDEX(table,,3)))<182),ROW(INDEX(table,,3))-1,""),ROW()-1),2)}
G2に、{=INDEX(table,SMALL(IF((CODE(ASC(INDEX(table,,3)))>=177)*(CODE(ASC(INDEX(table,,3)))<182),ROW(INDEX(table,,3))-1,""),ROW()-1),3)}
H2に、{=INDEX(table,SMALL(IF((CODE(ASC(INDEX(table,,3)))>=177)*(CODE(ASC(INDEX(table,,3)))<182),ROW(INDEX(table,,3))-1,""),ROW()-1),1)}
という式を入れます。配列数式なので、Ctrl+Shift+Enterで確定させて下さい。
それぞれ、下方にエラーになるところまでコピーします。
これでア行の名前だけ抽出できました。
他の行(カ行、サ行...の事)は、177と182のASCIIコードのところを変更して応用して下さい。
ASCIIコードは、CODE関数で取得できます。
下方向に作成するのは調整が大変だと思いますので、横方向に作る方が楽だと思います。
参考URL:http://office.microsoft.com/ja-jp/excel-help/HA0 …
No.5
- 回答日時:
回答No4です。
シート1では最初にフリガナを重点に昇順で並べ替えを行ってから実施してください。
なお、F2セルへの入力の式は次のように訂正してください。
=IF(E2="","",(E2-1)*3+2+COUNT(E$2:E2))
No.3
- 回答日時:
数式で行ったらとんでもないことに、、、
しかも、7文字分しか検査してないし、
重複は13人までだし。
D2セルに 7文字分のコードを検査し、足す
=SUM((MATCH(MID(JIS(C2)&REPT("ァ",MAX(0,7-LEN(JIS(C2)))),{1,2,3,4,5,6,7},1),
CHAR(9504+ROW($A$1:$A$86)))+13)*100^{6,5,4,3,2,1,0})
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
E2セル 重複チェック
=COUNTIF($C$2:C2,C2)
F2セル 重複考慮
=D2*10+E2
A12セル 連番
B12セル 並び替え
=SMALL($F$2:$F$9,A12)
C12セル 会員番号の抽出
=INDEX(A$2:A$9,MATCH($B12,$F$2:$F$9,0))
D12セル ○行に属するか
=MATCH(B12/10^13,{14,24,34,44,55,60,75,80,86,92})
A21セル ○行の数値化
=MATCH(LEFT(JIS(B21),1),{"ァ";"カ";"サ";"タ";"ナ";"ハ";"マ";"ャ";"ラ";"ワ"})
A22セル 連番とエラー処理
=IF(COUNTIF($D$12:$D$19,$A$21)<ROW(A1),"",ROW(A1))
B22セル 会員番号の抽出
=INDEX($C$12:$C$19,MATCH($A$21,$D$12:$D$19,0)+A22-1)
数式ではこれが限界かなあ。添付画像参照
はっきり言ってマクロの記録でマクロを覚えたほうが正確で簡単だ。

No.2
- 回答日時:
関数では無理とは言いませんが非常に難しい、又、VBAは無理だという事なので次の方法は如何でしょうか。
抽出結果は元シート構成と同じになります。
エクセル2003以下の操作手順例として元シートをSheet1からSheet2にア行を抽出します。
(1)Sheet2のA1は未入力、A2に=SUM(COUNTIF(Sheet1!C2,{"ア*","イ*","ウ*","エ*","オ*"}))>0を入力(文字列はsheet1のフリガナ列に合わせて下さい、但しアスタリスクは半角)
(2)Sheet2の上でデータ→フィルタ→フィルタオプションの設定→指定した範囲を選択、リスト範囲欄にsheet1!$A:$C、検索条件欄に$A$1:$A$2、抽出範囲欄にA4→OK
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- Excel(エクセル) エクセルのマクロで複数条件に当てはまるものを全て抽出したいです 7 2022/05/21 08:51
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセルの関数を教えてください。② 9 2023/05/25 15:28
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセル関数について 6 2022/09/04 17:41
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
エクセル
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】A列にある、日付(本...
-
エクセルの循環参照、?
-
【マクロ】3行に上から下に並...
-
【マクロ】WEBシステムから保存...
-
【マクロ】EXCELで読込したCSV...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
【条件付き書式】シートの中で...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
派遣会社とかハローワークとか...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報