首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对电子元件列表进行排序?

对电子元件列表进行排序?
EN

Stack Overflow用户
提问于 2019-10-22 22:52:51
回答 2查看 150关注 0票数 1

在电子表格中,电子元器件清单按其值列出,例如,1R0 (1欧姆),1K0 (1公斤-欧姆)或22 p(22微微-法拉第),1n0 (1纳米-法拉第)。如何将这种格式的数字按数字顺序排序?

之前,未排序:

电阻器

  • 1K0
  • 1R0

电容器

  • 1n0
  • 二十二便士

后,排序:

电阻器

  • 1R0
  • 1K0

电容器

  • 二十二便士
  • 1n0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-24 11:32:41

您可以使用以下自定义函数来排序您的值:

代码语言:javascript
复制
var unitMap = {
  'p': 1e-12,
  'n': 1e-9,
  'u': 1e-6,
  'm': 1e-3,
  'R': 1,
  'K': 1e3,
  'M': 1e6,
}

var unitRegex = /[pnumRKM]/;

function parseValue(val) {
  var result = {};
  var unitIdx = val.search(unitRegex);
  var int = parseInt(val.substring(0, unitIdx));
  var dec = parseFloat("0." + val.substring(unitIdx+1));
  var multiplier = unitMap[val[unitIdx]];
  return (int + dec) * multiplier;
}

/**
 * Sorts E96 values.
 *
 * @param {range} input The range to sort.
 * @param {number} input The column to sort by, starting at 1.
 * @param {boolean} input Is ascending
 * @return Sorted range.
 * @customfunction
 */
function CUSTOMSORT(values, sort_column, is_ascending) {
  values.sort(function (a, b) {
    var a_value = parseValue(a[sort_column-1]);
    var b_value = parseValue(b[sort_column-1]);
    return is_ascending ? a_value - b_value : b_value - a_value;
  });

  return values;
}

这种行为与您预期的页面内置=SORT()函数的行为基本相同,尽管功能较少。您可以看到以下两个示例:

票数 1
EN

Stack Overflow用户

发布于 2019-10-23 20:28:29

您可以像这样自定义排序,定义每个标量的排序顺序:

代码语言:javascript
复制
=ARRAYFORMULA(SUBSTITUTE(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(
 ARRAY_CONSTRAIN(SORT({REGEXEXTRACT(A2:A, "(\d+)(.*)"), 
               VLOOKUP(REGEXEXTRACT(A2:A, "\d+(.*)"), 
 {"R0", 1; 
  "K0", 2; 
  "M0", 3}, 2, 0)}, 3, 1, 1, 1), 999^99, 2))),,999^99)), " ", ))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58513269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档