グリッドでは、列ヘッダーの名前はA,B,C...,AA,AB,AC,...
などとExcelスプレッドシートのようになります。どのように私はのような文字列を数値に変換することができます:私はちょうど@#$ Fジャンクヤードを書いたA => 1, B => 2, AA => 27
Excelの列アルファベット(例:AA)を数値(例:25)に変換
答えて
試してみてください。
var foo = function(val) {
var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0;
for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) {
result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1);
}
return result;
};
console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702]
ありがとうございました。ありがとうございます。 –
@JaisonJustusようこそ;) – Yoshi
はスニペット...必要性を最適化するために.. :)
charToNum = function(alpha) {
var index = 0
for(var i = 0, j = 1; i < j; i++, j++) {
if(alpha == numToChar(i)) {
index = i;
j = i;
}
}
console.log(index);
}
numToChar = function(number) {
var numeric = (number - 1) % 26;
var letter = chr(65 + numeric);
var number2 = parseInt((number - 1)/26);
if (number2 > 0) {
return numToChar(number2) + letter;
} else {
return letter;
}
}
chr = function (codePt) {
if (codePt > 0xFFFF) {
codePt -= 0x10000;
return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF));
}
return String.fromCharCode(codePt);
}
charToNum( 'A' )=>は1を返し、charToNum( 'AA')=>は27を返します。
numToCharはうまく動作しますが、charToNum関数が不完全で(非効率な)ように見えます。 – mpen
@マークはい、そのすばやい回避策。可能であれば、コードを最適化してより良い回答を投稿することができます。ありがとうございます。 –
ここでは、実装する必要があるコードの簡単な例です。 これは任意の文字数で動作します。
function letterToNumbers(string) {
string = string.toUpperCase();
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', sum = 0, i;
for (i = 0; i < string.length; i++) {
sum += Math.pow(letters.length, i) * (letters.indexOf(string.substr(((i + 1) * -1), 1)) + 1);
}
return sum;
}
Public Function ColLet2Num(Letras As String)
'RALONSO MAYO 2017
'A-> 1
'OQ ->407
'XFD->16384
Dim UnChar As String
Dim NAsc As Long
Dim F As Long
Dim Acum As Long
Dim Indice As Long
Letras = UCase(Letras)
Acum = 0
Indice = 0
For F = Len(Letras) - 1 To 0 Step -1
UnChar = Mid(Letras, F + 1, 1)
NAsc = Asc(UnChar) - 64
Acum = Acum + (NAsc * (26^Indice))
Indice = Indice + 1
Next
If Acum > 16384 Then
MsgBox "La celda máxima es la XFD->16384", vbCritical
End If
ColLet2Num = Acum
End Function
溶液1:最高のパフォーマンスとブラウザ互換性
// convert A to 1, Z to 26, AA to 27
function lettersToNumber(letters){
var chrs = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ', mode = chrs.length - 1, number = 0;
for(var p = 0; p < letters.length; p++){
number = number * mode + chrs.indexOf(letters[p]);
}
return number;
}
溶液2:ショートコード(ES6矢印関数)
// convert A to 1, Z to 26, AA to 27
function lettersToNumber(letters){
return letters.split('').reduce((r, a) => r * 26 + parseInt(a, 36) - 9, 0);
}
試験:
['A', 'Z', 'AA', 'AB', 'ZZ','BKTXHSOGHKKE'].map(lettersToNumber);
// [1, 26, 27, 28, 702, 9007199254740991]
lettersToNumber('AAA'); //703
私はそれがどのように動作するかをよりよく説明し、他の言語への移植が容易になり、より詳細な形でYoshi's answer書き直し:
var foo = function(val) {
var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var baseNumber = base.length;
var runningTotal = 0;
var characterIndex = 0;
var indexExponent = val.length - 1;
while(characterIndex < val.length){
var digit = val[characterIndex];
var digitValue = base.indexOf(digit) + 1;
runningTotal += Math.pow(baseNumber, indexExponent) * digitValue;
characterIndex += 1
indexExponent -= 1
}
return runningTotal;
};
console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702]
- 1. 数字をExcelの列アルファベットに対応するアルファベットに変換する
- 2. 関数の数値結果をカンマで文字列に変換する例
- 3. R凡例変数置換
- 4. 数値をテキスト例外に変換する
- 5. PHPマニュアル:Is_Numericの例1の数値変換?
- 6. 例外処理を伴う数値ベース変換
- 7. 列挙型の戻り値をC++の例外に変換するには?
- 8. Excel vba - 文字列を数値に変換する
- 9. アルファベット文字列をC#の整数に変換する
- 10. 例外が発生する例外:文字列をjava.sql.dateに変換
- 11. 10進数をアルファベット列IDに変換しますか?
- 12. SPSS - 例に変数
- 13. どの列に行の次の例を変換する
- 14. ポップモーションの例をGreenSockに変換する
- 15. 反復は、例えば、変数の列
- 16. JSR303 JavaBean検証例外をカスタム例外に変換する
- 17. 文字列(例: "Car")をRubyのクラスに変換する
- 18. geom_hexbinマップをアルファベットに変換
- 19. JavaScriptの:変数の配列に文字列の配列に変換し、例えば、
- 20. 複数の値をアルファベット順に並べ替え[Excel]
- 21. 日付変換例外が
- 22. 型変換例外NHibernateは
- 23. python2.7の例外TypeError:文字列中に変換すべての引数が
- 24. `[] ':整数に文字列のいない暗黙の変換(TypeError例外)
- 25. JSONObjectをJSONArray例外に変換する
- 26. Androidの文例に変換する
- 27. Laravel 5.4配列から文字列への変換例外
- 28. 文字列変換への配列例外Laravel 4.2
- 29. 数値値入力例外
- 30. JPEGイメージをバイト配列に変換する - COM例外
一つの小さな修正を... AAは27 –
する必要がありますあなただけの位置を使用することはできませんその数値として変換する列のAAが25位にあれば、それはあなたの答えです... – Yaniro
いいえ、そこには「コードスニペットはありません」とあります。あなたが書かれている場合は、あなたがこれまで持っているものを私たちに示してください。ちなみに、なぜ27ではなく「AA」25ですか? –