Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Microsoft 365)
データ→区切り位置 が上手く出来ない。
投稿日時: 23/08/24 11:49:11
投稿者: mild2

データ→区切り位置 
↑これで1つのセルを2つのセルに分割したいのですが、分割出来ないので調べたら、見た目には分からくても改行コードとかの不要な文字コードが含まれている可能性があるとの事だったので、CLEAN関数で実行しましたが、その後でも分割出来ませんでした。
 
コピーして値貼付後でも駄目でした。
 
試しに目的のセルを違うセルに、手入力した後に手入力したセルを区切り位置で分割したら上手く出来ました。ですのでエクセルの操作は問題なく出来ています。
 
分割したい目的のセルと、手入力したセルは見た目は全く同じですが、分割できるものと分割出来ないものとに別れました。
 
最後の手段として、両セルの全部の文字コードを抽出して比較したら何処が違うのかが分かる筈なので、その違いを把握するために、両セルの全文字の文字コードを抽出しましたが、意外にも全部の文字コードが全く同じなのです。
 
目的を達成するには、文字列関数を色々駆使したら出来る筈ですのでそれは後でネットで調べます。
 
お尋ねしたいのは今回のように、全部の文字コードが全く同じでも分割出来る、出来ないの違いの原因は何なのか?またその対処法です。宜しくお願いします。

回答
投稿日時: 23/08/24 12:25:20
投稿者: Suzu

mild2 さんの引用:
お尋ねしたいのは今回のように、全部の文字コードが全く同じでも分割出来る、出来ないの違いの原因は何なのか?またその対処法です。宜しくお願いします。

 
違いが無いのに、違う動作になってしまっては困ります。
 
そもそもの前提に疑念があります。
文字コードの違いが発生しているのではないか と言う事です。
 
 
引用:
両セルの全文字の文字コードを抽出しましたが、意外にも全部の文字コードが全く同じなのです。
具体的にどの様な段階を踏み、文字コードを抽出したのでしょうか?
 
 
結局、分割できる/出来ない は ある位置に 特定の文字が含まれているかを見れば良いので
その位置の文字コードを見れば良いのです。
 
それ以外の所は DELや、BackSpace で消していって
区切り位置の 前後一文字くらいにして
1. LEN/LENB
が合っているか確認
 
2.MIDで文字切り出し
3.MIDで切り出した文字を、UNICODE関数で調べる
 
または
セルの中身のテキストをバイナリエディターに張り付けて調べる
でしょうか。

投稿日時: 23/08/24 12:45:59
投稿者: mild2

違いが無いのに、違う動作になってしまっては困ります。
→はい、確かにそうですよね。
   
具体的にどの様な段階を踏み、文字コードを抽出したのでしょうか?
https://www.relief.jp/docs/003606.html
↑これでやりました。その結果、両者は全く同じだったのですが?
何か操作を間違ったのでしょうかね?
 
それとつかぬ事をお尋ねしますが、投稿者のコメントうぃ引用したい場合は、どうしたら良いのでしょうか?
今回も引用したかったのですが、その方法を知らなかったので。

回答
投稿日時: 23/08/24 15:31:28
投稿者: taitani
投稿者のウェブサイトに移動

mild2 さんの引用:
それとつかぬ事をお尋ねしますが、投稿者のコメントうぃ引用したい場合は、どうしたら良いのでしょうか?
今回も引用したかったのですが、その方法を知らなかったので。

 
引用したい部分を選択 (反転) させ、下の BB コード部分の 「引用」ボタンを押下です。
「送信」を行う前に、「プレビュー」で確認してみてください。

回答
投稿日時: 23/08/24 16:57:59
投稿者: Suzu

引用:
https://www.relief.jp/docs/003606.html
↑これでやりました。その結果、両者は全く同じだったのですが?
何か操作を間違ったのでしょうかね?

 
LEN は 文字数を数える関数
LEFT は 左から 何文字を取得する関数
 
文字コードを取得する関数ではありません。
 
 
例えば
A1: 123
A2: =UNICHAR(13) ← 関数  【空白】
A3: あいう
 
として
A4: =CONCAT(A1:A3) ←A1〜A3の文字を結合する関数
とすれば、A4 に、【123あいう】と表示されます。
 
A5: =LEN(A4) ← 指定の文字数を取得する関数
とすれば、A5に、【7】が表示されます。 
 
D1〜D7 に 1〜7の連番を入力し
E1 に =MID(A$4,D1,1) ←指定文字数目 の文字を切り出す関数
として、E7 までオートフィル
 
F1 に =UNICODE(E1) ← 指定文字の文字コードを取得する関数
として、F10 まで オートフィル
 
 
A5 には 【7】があり、文字数が 7文字なのに
A4 には、【123あいう】 が表示され 6文字のはず・・
 
その答えは、E4 に 【空白】となっているが 文字としては存在するが表示上見えない。
 
こんな文字もあるのです。見た目がすべてではない一例です。
 
UNICODE を使い 文字コードを取得してください。

回答
投稿日時: 23/08/24 17:03:33
投稿者: gombohori

 文字が同じかどうかを判定する関数としてEXACT関数があるので、これで確認してみては?

投稿日時: 23/08/24 17:51:53
投稿者: mild2

Taitaniさん、ありがとうございました。
 
Gombohoriさん、EXACT関数を使って見ました。見た目は全く同じでも、FALSEが返って来ました。
ありがとうございました。
 
Suzuさん、UNICODE試しました。
その結果、空白部分がエラー原因でした。
元の分割できないセルの空白部分は、コード番号160でした。
その空白を一度手作業で削除してまた元の空白部分を作るために半角で空白を埋めましたら、コード番号が32に変わりました。見た目は全く同じですが、空白部分のコード番号が変わりました。その結果、上手く分割出来ました。ただ数百あるデータを手作業で空白部分の変換をするわけには行きませんので、この後どのように対処したら良いでしょうか?

投稿日時: 23/08/24 18:11:20
投稿者: mild2

UNICHAR(160)をUNICHAR(32)に置換とか出来ないでしょうね?

回答
投稿日時: 23/08/25 07:52:25
投稿者: んなっと

 その文字コード160のスペース(改行をしないスペース)を選択してコピー
→置換
  検索する文字列 に貼り付け
  置換後の文字列 半角スペース入力
  すべて置換
 
※Altキーを押しながらテンキーで0160と入力→Altキーを離す は、
 検索と置換ダイアログでは使えないようです...

投稿日時: 23/08/25 10:10:18
投稿者: mild2

引用:
 その文字コード160のスペース(改行をしないスペース)を選択してコピー
→置換
  検索する文字列 に貼り付け
  置換後の文字列 半角スペース入力
  すべて置換

 
んなっとさん、これで置換出来ました。
 
その後、目的の データ→区切り位置 で上手くデータ分割が出来ました。
問題が無事、解決しました。
 
ご回答頂いた皆さん、ありがとうございました。