長い文字列の中身を特定の規則に則って入れ替えたい
ダメ元で質問させて頂きます。
1セル中の文字列を…例えば、長い文字列の中、4文字ずつの組で前2文字後ろ2文字をExcel関数を使って全て入れ替える方法はあるでしょうか?
文字数は、必ず8の倍数になり、使用する文字は0〜9とA〜Fのみです。
具体的には下記の様にしたいです。
0123456789ABCDEF……
↓
23016745AB89EFCD……
シートの構造上、無駄なセルを増やしたくないため、できれば1セルでスパッと済ませたいです。無理なら、作業セルが1〜2個あっても良いと考えております。
Excel2016でも使用できることを想定していますが、新しいバージョンなら可能という手があれば、そちらも教えて頂きたいです。
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
こんばんは
No2様のユーザー定義関数による方法がよいと思いますが、無理矢理に関数で行う方法を考えてみました。
元の文字列は4の倍数であると決め打ちですが、A1セルに元の文字列があるとして、TEXTJOIN関数が使える環境であることが条件です。
例えばA2セルに
=TEXTJOIN("",1,INDEX(MID(A1,ROW(OFFSET(A1,,,INT(LEN(A1)/4)))*4-1,2) & MID($A$1,ROW(OFFSET(A1,,,INT(LEN(A1)/4)))*4-3,2),))
とかではいかがでしょうか?
最近の回答を拝見しています。
実は質問せずにvbaで解決するつもりでいたのですが、No.4さんならもしかしたら…との期待でダメ元で質問させて頂きました。
No.2さんの方法が一番スッキリしそうだと思いますが、既存の関数でできるならその方が楽ですよね。
手元の365環境を使って簡単な文字列で試したところ、うまく動いてくれました!
TEXTJOINは2016でも使えるようなので、月曜日に会社で試してみようと思います。
取り敢えずはこの式の解読から始めます…。
有り難うございました。
No.3
- 回答日時:
> シートの構造上、無駄なセルを増やしたくないため、できれば1セルでスパッと済ませたいです。
無理なら、作業セルが1〜2個あっても良いと考えております。目的のシートというか対象のシートというのか、そのシート("Sheet3")とは別に作業用シート("Sheet3s")をつくってやれば、("Sheet3s")の目的の文字列のあるセルを、("Sheet3")の1つのセル参照させれば、「求める文字列」を表示させる1つのセルだけを使ったことになると思いますが、それでは具合が悪いのでしょうか。
、"Sheet3s"のA列に4文字づつを縦に並べ、B列にA列の4文字を(後2文字&前文字)としたものを出し、C列にB列の4文字をただ後ろに繋げた文字列を造ると、C列の最終行には、目的の文字列ができます。
回答有り難うございます。
力技でやろうとすると、かなりの領域を使用してしまうため、シートが重くなってしまうことを懸念しております。
個人的の趣味にもなってしまうのですが、綺麗に纏めたいというのもありまして…。
バイナリ形式のファイルをマクロで読み込んで、特定の条件を指定してシート1に16進で出力します。
最大で4000文字程度のデータが数千件…恐ろしく重くなるので通常は十数件程度になるように抽出範囲を絞りますが、それでもかなりの量になります。
シート2〜4には抽出したデータを分解、解釈するための関数や定義が詰まっており、無駄な領域を増やしたくないという事情もあります。
No.2
- 回答日時:
こんばんは、800文字とかあるのでしょうか?
関数よくわからないのですが、16文字程度ならべたで、、
=CONCATENATE(MID(A1, 3, 2),MID(A1, 1, 2),MID(A1, 7, 2),MID(A1, 5, 2),MID(A1, 11, 2),MID(A1, 9, 2),MID(A1, 15, 2),MID(A1, 13, 2))
800とかあるなら、、関数で出来るのかな?
私には無理なので、好みはありますが、ユーザー関数を作った方が早いかと
Public Function ch_swap3412(strVal As String)
Dim i As Long, buf As String
For i = 1 To Len(strVal) Step 4
If buf = "" Then
buf = Mid(strVal, i + 2, 2) & Mid(strVal, i, 2)
Else
buf = buf & Mid(strVal, i + 2, 2) & Mid(strVal, i, 2)
End If
Next
ch_swap3412 = buf
End Function
セルに =ch_swap3412(A1)
文字数は最大4000文字程度になります。
ユーザー関数ですか。
聞いた事はありましたが、使った事はありませんでした。
マクロの関数と同じように書けるのですね。
ユーザー関数を使えば解決できそうです。
有り難うございます!
No.1
- 回答日時:
Excelだと、長い文字列の処理を関数のみでするのはマクロでないと
無理だと思う。
4文字ごとに作業セルに区切るなら関数での処理も可能ですが、8の
倍数といっても、どの程度の文字数なのかで処理するセル数の増減
があるため、作業セルが1~2個では済まないためです。
正規表現が使えるテキストエディタや、Wordなどを使って処理をする
なら簡単に処理できるものですから、別手段を検討されてはいかが。
※ 正規表現の例(Wordの場合は[ワイルドカード]使用のこと)
[検索する文字列]に
([0-9A-F]{2})([0-9A-F]{2})
[置換後の文字]に
\2\1
エディタってそんな置換も出来るのですか…。
今回、Excelの関数で出来ればラッキーだと思っております。
バイナリ形式のファイルから特定のデータを抽出して、見つかったデータを特定の列にその数分だけ上から順に16進でセットするシートがありまして…。
新しい形式のデータを解析するのに、質問文の並びにできれば既存の仕組みをそのまま使えるもので。
最近は知らない高度な関数も結構あるようなので、関数でサクッと出来れば…と考えた次第です…。
無理そうならマクロでなんとかしようと思います。
エディタの件、秀丸なら出来そうですよね。
今後のためにもかなり役に立ちそうなので、勉強させていただこうと思います。
有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- Excel(エクセル) Excelの入力規則にいれる関数について 7 2022/12/22 10:19
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
4つのパターンを表示するEXACT...
-
エクセルの数式で教えてください。
-
エクセルで指定した日付、店舗...
-
Excel:一部のフォントでセルの...
-
Excel初心者です。 詳しい方、...
-
Excel初心者です。 詳しい方、...
-
Excel 2019 のピボットテーブル...
-
スマートな関数を教えて下さい。
-
Excelのグラフ軸について
-
EXACT関数とIF関数の組み合わせ...
-
Excel ウインドウ枠の固定をす...
-
エクセルで日付の入ったセルの...
-
excelの不要な行の削除ができな...
-
INDIRECTを使わず excelで複数...
-
各ページの1番上の表示について
-
スプレッドシートの関数VLOOKUP...
-
エクセルでセルに「氏名を入力...
-
関数を教えて下さい。
-
Excelのif関数で文字が見えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
皆様有難うございました。
思いのほか回答を頂き、Excelの中でも自分が一部の機能しか使用していないのだなと改めて気付かされました。
また、エディタについてのテクニックについて知ることができ、思わぬ収穫になりました。
誠に恐縮ではありますが、当初の希望である関数での解決策を示して下さったNo.4さんをベストアンサーに選ばせて頂きます。