2016-10-31 7 views
1

メッセージングにAPIを使用しようとしています。私の特定のアプリケーションでは、APIを使用する前にすべての文字のUSC-2値を取得する必要があります。 指定した文字列のすべての文字に対してUSC-2の値を取得する方法を教えてください。私のアプリケーションでは、スプレッドシートのセルに文字列を入力し、別のセルの文字列のUSC-2値を表示したいと考えています。ExcelまたはOfficeCalcで文字列のUnicode(USC-2)値を取得する

例:1つのセルに「नमस्ते」と入力すると、別のセルに「0928 092E 0938 094D 0924 0947」という出力が表示されます。

excelとOfficeCalcには同様の機能を果たす機能「UNICODE」がありますが、文字列の最初の文字にのみ適用されます。私は4桁のUnicode値に文字列全体を変換したいと思います。

API Link - ページ6 - セクション6.2

+0

シート式のみを使用することはできません。マクロプログラミング言語が必要です。どのようなプログラミング言語が使えるでしょうか?また、なぜExcelタグですか? ExcelはVBAもオプションですか? –

+0

既にこのアプリケーションで使用しているため、Excelで操作したいと考えています。また、文字列の数や消費する実際のSMSの数などの入力文字列から動的データを引き出したい場合。また、受信者のリストを保存することもできます。すべてのデータをExcelで取得した後、私はperlを使用してファイルを読み込み、APIを呼び出す予定です。 – bubble

+0

私はVBAに慣れていません – bubble

答えて

1

マクロなしの唯一の解決策は、ヘルパー細胞を使用しています。

enter image description here

式:

B1では:結果が空になるまで

=MID($A1,COLUMN(A1),1) 

右にコピー。 B2

#VALUEエラーが表示されるまで右にコピー
=DEC2HEX(UNICODE(B1),4) 

B3

=B2 

C3で:

#VALUEエラーが表示されるまで右にコピー
=B3&C2 

。次のユーザ定義関数(エクセルVBA)を使用して

が、これは、細胞内

=ucscode(A1) 

を用いて達成することができます。

機能:OpenOfficeのCalcのでは

Public Function ucscode(s As String) As String 
For i = 1 To Len(s) 
    ucscode = ucscode & Application.Dec2Hex(AscW(Mid(s, i, 1)), 4) 
Next 
End Function 

式ソリューションは、Excelと同じになります。もちろん、エラーは#VALUEではなくErr:504です。starbasicと

ユーザー定義関数は次のようになります。

Public Function ucscode(s As String) As String 
Dim sresult as String 
For i = 1 To Len(s) 
    sresult = sresult & right("0000" & hex(asc(mid(s, i,1))), 4) 
Next 
ucscode = sresult 
End Function 
1

私の答えは@Axelリヒターさんに似ている:セルB1に

  1. は、=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),"")を入力します。
  2. この式をB30行まで入力します。
  3. セルC1には、式=CONCATENATE(B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30)を入力します。

変換する文字列をセルA1に入力します。最大30文字まで使用できます。

calc sheet formulas

のLibreOfficeの最近のバージョンでは(とExcelと思う)ことを覚えておいてください、あなたは文字のUnicode値を確認するためにXAltキー + を押すことができます。

もちろん、これはPerlでも簡単です。

関連する問題