[[20231102142051]] 『先頭文字ごとにシート分け』(はせぴぃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『先頭文字ごとにシート分け』(はせぴぃ)

 特定の列に入れた文字を(A1,A2,…)
頭文字ごとに別のシートへ表すことはできますか?
(漢字表記のものはフリガナで、英数は1つのシートで)

SHEET1
A1 アイチ   → SHEET2 A1 アイチ
A2 アオモリ  → SHEET2 A2 アオモリ 
A3 アキタ   → SHEET2 A3 アキタ
A4 イシカワ  → SHEET3 A1 イシカワ
A5 イバラキ  → SHEET3 A2 イバラキ
A6 イワテ   → SHEET3 A3 イワテ
A7 エヒメ   → SHEET4 A1 エヒメ
……… 

関数でお願い致しますm(_ _)m

< 使用 Excel:Excel2016、使用 OS:Windows10 >


単純に
SHEET2A1=Sheet1!A1
SHEET3A1=Sheet1!A4
SHEET4A1=Sheet1!A7
それぞれ必要分下へコピー
(IT) 2023/11/02(木) 15:03:12

 ごめんなさい。
それが可能なら手作業しますが、
単語数が1000を超えますので
それはご勘弁下さい。

(はせぴぃ) 2023/11/02(木) 15:05:53


マクロになりますね。
詳しくないので他の回答をお待ちください。
(IT) 2023/11/02(木) 15:17:32

質問です。
頭文字ごとのシートはすでにあるのでしょうか?
その場合、シート名は決まっているのでしょうか?
(HDMP) 2023/11/02(木) 15:37:07

 あります。
『英』、『あ』、『い』、『う』、『え』、…
とする予定でいます。

(はせぴぃ) 2023/11/02(木) 15:41:29


 とりあえずマクロ作りました。
 標準モジュールにコピペして実行してみてください。
 該当するシートがない場合は「英」シートに記述されます。

 Sub SAMPLE()
    Dim Rng         As Range
    Dim i           As Long
    Dim Sh          As Worksheet
    Dim Phonetic    As String
    Set Sh = ActiveSheet
    For i = 1 To Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row
        Phonetic = StrConv(Left(Application.GetPhonetic(Sh.Range("A" & i).Value), 1), vbHiragana)
        If ShExist(Phonetic) = True Then
            Set Rng = Sheets(Phonetic).Range("A" & Sheets(Phonetic).Rows.Count).End(xlUp)
        Else
            Set Rng = Sheets("英").Range("A" & Sheets("英").Rows.Count).End(xlUp)
        End If
        If Len(Rng.Value) = 0 Then
            Rng.Value = Sh.Range("A" & i).Value
        Else
            Rng.Offset(1).Value = Sh.Range("A" & i).Value
        End If
    Next i
 End Sub

 'シートの存在チェック
 Function ShExist(ShName As String) As Boolean
    Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Sheets
        If Sh.Name = ShName Then
            ShExist = True
            Exit Function
        End If
    Next Sh
 End Function
(HDMP) 2023/11/02(木) 16:04:22

 ありがとうございます。

やはり、マクロでないときびしいですか?

 今、時間がないのでマクロは後で試します😅

(はせぴぃ) 2023/11/02(木) 16:25:29


>やはり、マクロでないときびしいですか?
だったらITさんの方法でやれば。
(かす) 2023/11/02(木) 17:15:46

1つの列に入力されている文字から
頭文字が『あ』のものを
他の列に詰めて表示することは
関数ではできませんか?

(はせぴぃ) 2023/11/06(月) 10:37:35


 とりあえず漢字表記、英字は抜きで。

 シートのC1セルにア、イ…など抜き出したい頭文字を記入しておく。

 でA1セルに
 =IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW($1:$1000)/(LEFT(Sheet1!A$1:A$1000)=C$1),ROW(A1))),"")
 と入力して下へフィルコピーではどうだろうか?

 なお、上記式では元データが1000行目までに対応している。
(ねむねむ) 2023/11/06(月) 10:49:27

 おっと抜き出す頭文字はシート名で指定か。
 であれば次でどうだろうか?
 =IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW($1:$1000)/(LEFT(Sheet1!A$1:A$1000)=REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),"")),ROW(A1))),"")
(ねむねむ) 2023/11/06(月) 11:10:52

 ねむねむさん、ありがとうございます。
うまくいきそうです♪

 濁音、半濁音も含めたいのですが
どうすればいいですか?

 漢字はむりですか?

(はせぴぃ) 2023/11/07(火) 12:52:06


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.