You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于客户姓名生成唯一编码:求符合指定规则的实现公式

Got it, let's work through this name-to-unique-ID task you've got. Below are solutions tailored for common tools you might be using—no fancy jargon, just straight-up working formulas/scripts:

Excel & Google Sheets Formulas

For Excel (365/2021+)

If your customer names are in column A (starting at row 2), use this formula to generate the ID in column B:

=CONCAT(LEFT(TEXTBEFORE(A2," "),4), IFERROR(LEFT(TEXTAFTER(TEXTBEFORE(A2," "," ",2)," "),3),""), IFERROR(LEFT(TEXTAFTER(A2," "," ",2),2),""))

Breakdown of how this works:

  • TEXTBEFORE(A2," ") grabs the first word of the name, then LEFT(...,4) takes its first 4 characters (or the whole word if it's shorter than 4 letters)
  • The middle part extracts the second word (using TEXTBEFORE to get the first two words, then TEXTAFTER to isolate the second) and takes its first 3 characters
  • The last part pulls the third word directly with TEXTAFTER and takes its first 2 characters
  • IFERROR ensures the formula doesn't break if a name only has 1 or 2 words—it just leaves that part blank

For Google Sheets

Google Sheets uses a slightly different approach with SPLIT to break names into word arrays. Use this formula for column A names:

=CONCATENATE(LEFT(INDEX(SPLIT(A2," "),1),4), IFERROR(LEFT(INDEX(SPLIT(A2," "),2),3),""), IFERROR(LEFT(INDEX(SPLIT(A2," "),3),2),""))
  • SPLIT(A2," ") splits the name into a list of words
  • INDEX(...,1) picks the first word, INDEX(...,2) the second, etc.
  • Same as Excel, IFERROR handles shorter names gracefully
Python Script for Bulk Processing

If you're working with a large dataset (like a CSV of customer names), use this Python script with pandas to generate IDs in bulk:

import pandas as pd

def create_unique_id(full_name):
    # Split name into individual words
    name_parts = full_name.strip().split()
    id_segments = []
    
    # Add first word's first 4 chars (uppercase for consistency)
    if len(name_parts) >= 1:
        id_segments.append(name_parts[0][:4].upper())
    # Add second word's first 3 chars
    if len(name_parts) >= 2:
        id_segments.append(name_parts[1][:3].upper())
    # Add third word's first 2 chars
    if len(name_parts) >= 3:
        id_segments.append(name_parts[2][:2].upper())
    
    # Combine all segments into one ID
    return ''.join(id_segments)

# Load your data (replace 'customers.csv' with your file path)
df = pd.read_csv('customers.csv')
# Generate IDs and add as a new column
df['customer_id'] = df['full_name'].apply(create_unique_id)
# Save the updated data (optional)
df.to_csv('customers_with_ids.csv', index=False)
  • The .upper() ensures IDs are consistent (e.g., "John" and "john" won't generate different IDs) — you can remove this if case matters for your use case
Ensuring True Uniqueness

Note: The above rules might generate duplicate IDs for different names (e.g., "John Michael Smith" and "John Michelle Smith" would both make JOHMICSM). To fix this, add a suffix for duplicates:

Excel Fix

Modify the original formula to append a count of how many times the ID has appeared so far:

=LET(base_id, CONCAT(LEFT(TEXTBEFORE(A2," "),4), IFERROR(LEFT(TEXTAFTER(TEXTBEFORE(A2," "," ",2)," "),3),""), IFERROR(LEFT(TEXTAFTER(A2," "," ",2),2),""), base_id & IF(COUNTIF($B$2:B2,base_id)>1, COUNTIF($B$2:B2,base_id), ""))

This will add 2, 3, etc., to duplicate IDs to keep them unique.

内容的提问来源于stack exchange,提问作者clare weatherly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:13